【问题标题】:Outlook AddIn: creating new ContactItemOutlook 插件:创建新的 ContactItem
【发布时间】:2013-09-12 02:33:32
【问题描述】:

我使用以下代码将一些数据分配给给定 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 分配给 Sender。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。这是有道理的。但是 GetContact 确实适用于 一些 传入消息。
    • 这取决于消息的发送方式。通常,您将拥有一次性的收件人条目 ID,而 GetContact 将不起作用。
    猜你喜欢
    • 2014-07-17
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多