Outlook AddIn:创建新的ContactItem

时间:2013-09-11 17:33:45

标签: c# outlook vsto outlook-addin outlook-2010

我使用以下代码将一些数据分配给给定MailItem的相应ContactItem(Sender)。如果Sender.GetContact()返回null,我正在尝试创建一个新的ContactItem。

        Outlook.MailItem myItem = (Outlook.MailItem)this.OutlookItem;            
        Outlook.ContactItem currentContact = myItem.Sender.GetContact();
        if (currentContact != null)
        {
            currentContact.Body = "Example";
            currentContact.Save();
        }
        else
        {
            currentContact = Globals.ThisAddIn.Application.CreateItem(Outlook.OlItemType.olContactItem) as Outlook.ContactItem;
            currentContact.Email1DisplayName = myItem.SenderName;
            currentContact.Email1Address = myItem.SenderEmailAddress;
            currentContact.Email1AddressType = myItem.SenderEmailType;
            currentContact.Body = "Example";
            currentContact.Save();                
        }

但这对我来说似乎没有用。下次我收到该MailItem的联系人(参见下面的代码)时,它返回null。再次。再一次。

        Outlook.MailItem myItem = (Outlook.MailItem)this.OutlookItem;            
        Outlook.ContactItem currentContact = myItem.Sender.GetContact();

有什么问题吗?看起来新的ContactItem没有分配给Sender。

1 个答案:

答案 0 :(得分:1)

只有当外发邮件(不适用于传入)将联系人明确添加为收件人时,GetContact才会返回ContactItem对象。

GetContact将 检查您是否碰巧有一个具有相同电子邮件地址的联系人项目。

如果您需要查找匹配的联系人,请在“联系人”文件夹中明确使用MAPIFolder.Items.Find。