【问题标题】:Get Recipients from Outlook.MailItem从 Outlook.MailItem 获取收件人
【发布时间】:2015-04-20 00:03:48
【问题描述】:

我有一个 Outlook 插件,我在撰写电子邮件时尝试在其中获取电子邮件地址。在“收件人”字段中键入地址时,如果它们带有下划线,则插件会正确读取所有收件人。但是,如果它是一个新的电子邮件地址,即。它不会加下划线,那么收件人列表中不存在该电子邮件地址,这是我的代码:

Microsoft.Office.Interop.Outlook.MailItem email = GetMailItem(e);
int count = email.Recipients.Count;

【问题讨论】:

  • 如果您先跳出“收件人”编辑框,它们是否可以访问?
  • 他们会这样做,但不能保证用户在点击插件之前会这样做
  • 只是想缩小问题范围...

标签: c# .net email outlook outlook-addin


【解决方案1】:

先做email.Save()就成功了

【讨论】:

    【解决方案2】:

    我认为您应该使用 recipients.resolveall 方法 - 请参阅 https://msdn.microsoft.com/en-us/library/office/ff867165.aspx

    最大

    【讨论】:

    • 这没什么区别
    【解决方案3】:

    奇怪的是,我发现,虽然调用 MailItem.Save() 确实解析了地址(以便它们存在于 MailItem.Recipients 集合中),但调用 MailItem.Save() 不止一次(3-4 次)有风险以下异常:“System.Runtime.InteropServices.COMException (0x80040109): 由于消息已更改,无法执行操作”

    获取 MailItem.HTMLBody 属性似乎可以解析 To、CC、BCC 字段中的所有有效电子邮件地址,并避免多次调用 MailItem.Save() 的风险。

    我个人发现 MailItem.ResolveAll() 只是清除最后一次调用 MailItem.Save() 后添加的任何未解决的新收件人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-27
      • 2012-08-06
      • 2014-08-13
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多