Как добавить вложения в mailitem с помощью позднего связывания Outlook - PullRequest
3 голосов
/ 28 сентября 2010

Я пытаюсь создать почтовый элемент и добавить в него некоторые вложения, используя позднюю привязку.Мне уже удалось создать почтовый элемент, но я не могу вызвать свойство Вложения .

object objApp;
object objEmail;

Type objClassType = Type.GetTypeFromProgID("Outlook.Application");
objApp = Activator.CreateInstance(objClassType);

// Microsoft.Office.Interop.Outlook.OlItemType.olMailItem = 0
objEmail = objApp.GetType().InvokeMember("CreateItem", BindingFlags.InvokeMethod, null, objApp, new object[] { 0 });

mailItemType.InvokeMember("Subject", BindingFlags.SetProperty, null, objEmail, new object[] { subject });

// THIS RETURNS NULL?!
PropertyInfo att = mailItemType.GetProperty("Attachments", BindingFlags.GetProperty);

Что можно сделать, если нет свойства (или метода) вложения, чтобы вызвать?При раннем связывании это просто objEmail.Attachments.Add (...)

Ответы [ 2 ]

2 голосов
/ 29 сентября 2010

Проблема была в том, что я вызвал GetProperty напрямую.Это должен быть InvockeMember с BindingFlags.GetProperty.Я думаю, это потому, что интерфейс IUnknown и работает только метод , вызывающий .

Я также обнаружил, что вы можете получить тип Attachments из CLSID

Type attachmentsType = Type.GetTypeFromCLSID(new Guid("0006303C-0000-0000-C000-000000000046"));

, а затемcall

attachmentsType.InvokeMember("Add", BindingFlags.InvokeMethod, null, attachments, new object[] { ... });

Этот пример для Office 2003 .

0 голосов
/ 07 апреля 2011

Я думаю, что GetProperty STMT не совсем правильно, я получил это для работы, выполнив следующие действия:

object oMailItemAttachments = oMailItem.GetType().InvokeMember("Attachments", System.Reflection.BindingFlags.GetProperty, null, oMailItem, null);

parameter = new object[4];
parameter[0] = @sFileName;
parameter[1] = 1;
parameter[2] = Type.Missing;
parameter[3] = Type.Missing;

oMailItemAttachments.GetType().InvokeMember("Add", System.Reflection.BindingFlags.InvokeMethod, null, oMailItemAttachments, parameter);
...