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

Obtain Recepient Email Address (To address) from Outlook Plugin

我正在尝试查找收件人电子邮件地址,在从 outlook 读取邮件时我尝试了这些方法,但我收到了所有收件人,包括抄送,但我只需要在 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;

在这我有时会得到收件人的名字

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

请注意,Microsoft 目前不建议也不支持来自任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM和 NT 服务),因为当 Office 在此环境中 运行 时,Office 可能表现出不稳定的行为 and/or 死锁。

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