从 Outlook.MailItem 获取收件人

Get Recipients from Outlook.MailItem

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

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

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

最大

先做email.Save()就成功了

奇怪的是我发现,虽然调用 MailItem.Save() 确实解析了地址(因此它们存在于 MailItem.Recipients 集合中),但调用 MailItem.Save() 的次数超过一次(3-4 次)有以下异常的风险:"System.Runtime.InteropServices.COMException (0x80040109): The operation cannot be performed because the message has been changed"

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

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