从Outlook插件获取收件人电子邮件地址(地址)

时间:2015-01-23 10:26:43

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

我正在尝试找到Recepient To电子邮件地址,在阅读来自outlook的邮件时我尝试了这些东西,但我得到了包括cc在内的所有接收者,但我只需要在mailitem中发送电子邮件地址

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;

在这个时候得到了接收者的名字

1 个答案:

答案 0 :(得分:0)

您可以使用“收件人”类的Type属性来仅检测“收件人”。它将是以下OlMailRecipientType常量之一:olBCC,olCC,olOriginator或 olTo 。看起来您需要查看Type属性。

请注意,Microsoft目前不推荐也不支持任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)的Microsoft Office应用程序自动化,因为Office在此环境中运行Office时,可能会出现不稳定的行为和/或死锁。

如果要构建在服务器端上下文中运行的解决方案,则应尝试使用已为安全无人值守执行的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法。如果从服务器端解决方案使用Office应用程序,则应用程序将缺少许多成功运行的必要功能。此外,您将承担整体解决方案稳定性的风险。您可以在Considerations for server-side Automation of Office文章中详细了解相关内容。