Использование CreateItemFromTemplate для обработки вложения olEmbeddeditem Outlook - PullRequest
0 голосов
/ 17 сентября 2008

Я использую C # для обработки сообщения в почтовом ящике Outlook, содержащего вложения. Одно из вложений имеет тип olEmbeddeditem. Мне нужно иметь возможность обрабатывать содержимое этого вложения. Из того, что я могу сказать, мне нужно сохранить вложение на диск и использовать CreateItemFromTemplate, который бы возвращал объект.

Проблема, с которой я столкнулся, заключается в том, что olEmbeddeditem может быть любым из типов объектов Outlook MailItem, ContactItem, MeetingItem и т. Д. будет возвращено CreateItemFromTemplate?

В качестве альтернативы, если есть лучший способ передать содержимое вложений olEmbeddeditem в объект для обработки, я бы тоже был к этому открыт.

Ответы [ 2 ]

1 голос
/ 19 сентября 2008

Я нашел следующий код в группах Google для определения типа объекта Outlook:

Type t = SomeOutlookObject.GetType();
string messageClass = t.InvokeMember("MessageClass",
  BindingFlags.Public | 
  BindingFlags.GetField | 
  BindingFlags.GetProperty,
  null,
  SomeOutlookObject,
  new object[]{}).ToString();
Console.WriteLine("\tType: " + messageClass);

Я не знаю, помогает ли это с элементом olEmbedded, но, похоже, он идентифицирует обычные сообщения, элементы календаря и т. Д.

0 голосов
/ 26 октября 2012

Работая с вложениями электронной почты, которые также являются электронными письмами, которые в свою очередь содержат определенные пользователем свойства, к которым я хочу получить доступ, затем я выполняю следующие шаги:

Outlook.Application mailApplication = new Outlook.Application();
Outlook.NameSpace mailNameSpace = mailApplication.GetNamespace(“mapi”);
// make sure it is an embedded item
If(myAttachment.Type == Outlook.OlAttachmentType.olEmbeddeditem)
{
    myAttachment.Type.SaveAsFile(“temp.msg”);
    Outlook.MailItem attachedEmail = (Outlook.MailItem)mailNameSpace.OpenSharedItem(“temp.msg”);
    String customProperty = attachedEmail.PropertyAccessor.GetProperty(
        “http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-c000-000000000046}/myProp
}

Если вы откроете MailItem с помощью, тогда у меня не будет доступа к свойствам, указанным выше:

Outlook.MailItem attachedEmail = (Outlook.MailItem)mailApplication.CreateFromTemplate(“temp.msg”);  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...