从 Outlook Interop C# 中的已发送邮件文件夹中获取目标电子邮件地址

Get destination email addresses from Sent Items folder in Outlook Interop C#

我正在使用 Outlook Interop 和 C# 获取一些邮件信息以创建 excel 报告。我有已发送邮件文件夹中的电子邮件项目列表,我想获取我发送邮件的电子邮件地址。我找到了 "To" 属性 但只有 return 人名而不是地址。

任何人都可以帮我 return 来自 Outlook.MailItem 对象的电子邮件地址? 你可以问我是否需要更多信息。谢谢!!!

这是我设置属性的代码:

    foreach (object mail in mails)
    //mails is a list from Sent Items folder
        {
            if (mail is Outlook.MailItem)
            {
                var item = (Outlook.MailItem)mail;
                //i need the address in provider email
                var providerEmail = someProperty(????);
                var name = item.To;
                var request= "Other Request";
                var emailDate= item.ReceivedTime;
                var status = "Closed";
                var responseDate= item.CreationTime;
                var reportObject = new ReportModel
                {
                    Email = providerEmail ,
                    Name = name,
                    Solicitud = request,
                    EmailDate = emailDate,
                    Status = status,
                    ResponseDate = responseDate
                };
            }
        }

MailItem 有 Recipients 属性,您可以使用它来获取每种类型的收件人:

  • 抄送
  • 密送

使用recipient.Type识别收件人类型,recipient.Address获取其电子邮件地址。 示例:

protected override void getRecepients(MailItem OLitem, StringBuilder toStringBuilder,
        StringBuilder ccStringBuilder, StringBuilder bccStringBuilder)
    {
        try
        {
            var recipients = OLitem.Recipients;
            string parent = string.Empty;
            foreach (Microsoft.Office.Interop.Outlook.Recipient recipient in recipients)
            {
                switch (recipient.Type)
                {
                    case (int)Microsoft.Office.Interop.Outlook.OlMailRecipientType.olTo:
                        toStringBuilder.Append(recipient.Address + ", ");
                        if (parent == string.Empty)
                        {
                            parent = recipient.Address;
                        }
                        break;
                    case (int)Microsoft.Office.Interop.Outlook.OlMailRecipientType.olCC:
                        ccStringBuilder.Append(recipient.Address + ", ");
                        break;
                    case (int)Microsoft.Office.Interop.Outlook.OlMailRecipientType.olBCC:
                        bccStringBuilder.Append(recipient.Address + ", ");
                        break;
                    default:
                        break;
                }
            }
        }
        catch (Exception ex)
        {
            // do something with error
        }
    }