0

我使用以下代码将一些数据分配给给定 MailItem 的适当 ContactItem(发件人)。如果 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 没有分配给发件人。

4

1 回答 1

1

仅当传出消息(不适用于传入)将联系人显式添加为收件人时,GetContact 才会返回 ContactItem 对象。

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

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

于 2013-09-11T18:33:32.593 回答