Recipients.Resolve所有一半失败

时间:2018-05-03 03:02:25

标签: c# outlook contacts

我的目标是向现有MailItem mailItem添加/删除收件人。

我添加了newEmailAdress(" some.one@corp.com"):

mailItem.To += "some.one@corp.com"; 

然后我解析收件人,使用户看起来更好(比如显示内部联系人的Skype状态)。

mailItem.Recipients.ResolveAll();  

它适用于其中一半。对于某些人,如果我查看mailItem.To,则电子邮件字符串已更改为联系人姓名(" Some One"),并且联系人不在mailItem.Recipients中。但它们显示为已解决(例如,它们具有Skype状态,或者具有(联系)外部状态) 因此,对于一半的收件人来说,它已经以某种方式解决了一半。我无法找到任何逻辑,一些内部联系人工作,其他人不会,外部收件人也一样......

谷歌没什么帮助。我暂时停用ResolveAll,这样我的工具可以继续工作,但指针将不胜感激!

上下文:
要添加/删除收件人,

  • 我使用简单mailItem.To处理直接添加到mailItem.To.Contains(newEmailAdress)的电子邮件,以避免重复,并使用mailItem.Replace(newEmailAdress, "")进行删除。工作良好。

  • 然后,我想要处理已经解决或直接作为收件人输入的联系人。我浏览mailItem.Recipients,使用PropertyAcessor转换电子邮件地址,然后仅与newMailAdress进行比较。这就是我注意到有些人已经解决了一半。

1 个答案:

答案 0 :(得分:0)

To / CC / BCC属性可能包含也可能不包含电子邮件地址 - 您应该假设它们只包含名称。

此外,多个名称必须用“;”分隔:

mailItem.To += ";some.one@corp.com"; 

话虽如此,请使用MailItem.Recipients集合,尤其是Recipients.Add方法。您可以遍历该集合中的所有项目,并为每个收件人检查Recipient.名称和Recipient.Ad服饰属性。