【问题标题】:Recipients.ResolveAll half failingRecipients.ResolveAll 一半失败
【发布时间】:2018-05-03 03:02:24
【问题描述】:

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

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

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

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

mailItem.Recipients.ResolveAll();  

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

Google 帮不上什么忙。我将暂时停用 ResolveAll,以便我的工具可以继续工作,但不胜感激!

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

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

  • 然后我想处理已解决或直接作为收件人输入的联系人。我通过mailItem.Recipients,使用PropertyAcessor 转换电子邮件地址,然后只是与newMailAdress 进行比较。这就是我发现有些问题解决了一半的原因。

【问题讨论】:

    标签: c# outlook contacts


    【解决方案1】:

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

    另外,多个名称必须用“;”隔开:

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

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

    【讨论】:

    • 我将尝试使用 Recipients.Add 。至少这样我可以确定它们在 Recipients 集合中。但是,这并不能解释我注意到的行为,因为我自己将完整的电子邮件添加到 To/CC 属性,正确地用“;”分隔。
    • 它确实按预期工作,使用 Recipients.Add() 和 Recipient.Delete() 管理添加和删除。它并不能完全解释我遇到的问题,但它确实解决了我的问题!所以谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    相关资源
    最近更新 更多