我有一个Outlook插件,我在编写电子邮件时试图获取电子邮件地址。在" To"中键入地址时字段,如果它们加下划线,则插件会正确读取所有收件人。但是,如果它是一个新的电子邮件地址,即。它不会被加下划线,然后该收件人列表中没有该电子邮件地址,这是我的代码:
Microsoft.Office.Interop.Outlook.MailItem email = GetMailItem(e);
int count = email.Recipients.Count;
答案 0 :(得分:1)
首先执行email.Save()
诀窍
答案 1 :(得分:0)
我认为您应该使用recipients.resolveall方法 - 请参阅https://msdn.microsoft.com/en-us/library/office/ff867165.aspx
最高
答案 2 :(得分:0)
Strangly我发现,虽然调用MailItem.Save()确实解析了地址(以便它们出现在MailItem.Recipients集合中),但是多次调用MailItem.Save()(3-4次)风险以下异常:“System.Runtime.InteropServices.COMException(0x80040109):由于消息已更改,因此无法执行操作”
获取MailItem.HTMLBody属性似乎解析了To,CC,BCC字段中所有有效的电子邮件地址,并避免多次调用MailItem.Save()的风险。
我个人发现MailItem.ResolveAll()只是清除上次调用MailItem.Save()后添加的任何未解析的新收件人。