从Outlook.MailItem获取收件人

时间:2015-02-18 20:06:51

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

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

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

3 个答案:

答案 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()后添加的任何未解析的新收件人。