C# 使用CreateItemFromTemplate处理olEmbeddeditem Outlook附件
我正在使用C#处理Outlook收件箱中包含附件的邮件。其中一个附件为olEmbeddeditem类型。我需要能够处理附件的内容。据我所知,我需要将附件保存到磁盘,并使用CreateItemFromTemplate返回一个对象 我的问题是olEmbeddeditem可以是任何Outlook对象类型MailItem、ContactItem、MeetingItem等。如何知道特定olEmbeddeditem附件将是哪种对象类型,以便知道CreateItemFromTemplate将返回的对象C# 使用CreateItemFromTemplate处理olEmbeddeditem Outlook附件,c#,.net,outlook,attachment,C#,.net,Outlook,Attachment,我正在使用C#处理Outlook收件箱中包含附件的邮件。其中一个附件为olEmbeddeditem类型。我需要能够处理附件的内容。据我所知,我需要将附件保存到磁盘,并使用CreateItemFromTemplate返回一个对象 我的问题是olEmbeddeditem可以是任何Outlook对象类型MailItem、ContactItem、MeetingItem等。如何知道特定olEmbeddeditem附件将是哪种对象类型,以便知道CreateItemFromTemplate将返回的对象 或者,
或者,如果有更好的方法将olEmbeddeditem附件内容放入对象中进行处理,我也愿意这样做。我在Google Groups上找到了以下用于确定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项目是否有帮助,但它似乎可以识别常规邮件、日历项目等。处理电子邮件附件,这些附件也是电子邮件,这些电子邮件又包含我要访问的用户定义属性,然后我执行以下步骤:
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
}
如果使用打开邮件项目,则我将无法访问上述属性:
Outlook.MailItem attachedEmail = (Outlook.MailItem)mailApplication.CreateFromTemplate(“temp.msg”);