我使用以下代码将一些数据分配给给定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。
答案 0 :(得分:1)
只有当外发邮件(不适用于传入)将联系人明确添加为收件人时,GetContact才会返回ContactItem对象。
GetContact将 不 检查您是否碰巧有一个具有相同电子邮件地址的联系人项目。
如果您需要查找匹配的联系人,请在“联系人”文件夹中明确使用MAPIFolder.Items.Find。