我试图找到收件人电子邮件地址,在从Outlook阅读邮件时,我已经尝试了这些事情,但是得到了包括抄送在内的所有收件人,但我只需要邮件中的电子邮件地址
foreach (Microsoft.Office.Interop.Outlook.MailItem mail in myInbox.Items)
{
string smtpAddress = string.Empty;
Subject = mail.Subject;
Description = mail.Body;
FromEmail = mail.SenderEmailAddress;
Microsoft.Office.Interop.Outlook.Recipients recips = mail.Recipients;
string mailids = string.Empty;
foreach (Microsoft.Office.Interop.Outlook.Recipient recip in recips)
{
Microsoft.Office.Interop.Outlook.PropertyAccessor pa = recip.PropertyAccessor;
smtpAddress = pa.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x39FE001E").ToString();
ToEmail = smtpAddress;
break;
}
MailedDateTime = mail.CreationTime;
Direction = 1;
CompanyID = CompanyID;
UserID = UserID;
ID = mail.EntryID;
}
我也试过
ToEmail = mail.To;
在我得到有时接收者的名字
可以使用收件人类的 Type 属性来检测"收件人"。它将是以下 OlMailRecipientType 常量之一:olBCC、olCC、olOriginator 或 olTo。看起来您需要检查 Type 属性。
请注意,Microsoft 当前不建议也不支持从任何无人参与、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)自动化Microsoft Office 应用程序,因为在此环境中运行 Office 时 Office 可能会表现出不稳定的行为和/或死锁。
如果要生成在服务器端上下文中运行的解决方案,则应尝试使用已安全执行无人参与的组件。或者,您应该尝试找到至少允许部分代码在客户端运行的替代方法。如果使用服务器端解决方案中的 Office 应用程序,则该应用程序将缺少成功运行所需的许多功能。此外,您将承担整体解决方案稳定性的风险。可以在 Office 服务器端自动化的注意事项一文中阅读有关此内容的详细信息。