2008-09-17 39 views
0

我正在使用C#处理包含附件的Outlook收件箱中的邮件。其中一个附件是olEmbeddeditem类型。我需要能够处理该附件的内容。从我可以告诉我需要将附件保存到磁盘并使用CreateItemFromTemplate将返回一个对象。使用CreateItemFromTemplate处理olEmbeddeditem Outlook附件

我遇到的问题是olEmbeddeditem可以是任何Outlook对象类型MailItem,ContactItem,MeetingItem等。您如何知道哪个对象类型将使用特定的olEmbeddeditem附件,以便您知道对象将由CreateItemFromTemplate返回?

或者,如果有更好的方法将olEmbeddeditem附件内容加入到一个对象中进行处理,我也会接受。

回答

1

我发现在谷歌论坛下面的代码确定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

电子邮件附件,同时也是邮件中又包含我想访问的话,我请执行以下步骤用户定义的属性工作:

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”);