【问题标题】:Get destination email addresses from Sent Items folder in Outlook Interop C#从 Outlook Interop C# 中的已发送邮件文件夹获取目标电子邮件地址
【发布时间】:2017-05-23 19:22:30
【问题描述】:

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

谁能帮我从 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
                };
            }
        }

【问题讨论】:

    标签: c# email outlook interop


    【解决方案1】:

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

    • 抄送
    • 密送。

    使用receiver.Type 识别收件人类型和receiver.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
            }
        }
    

    【讨论】:

    • 您好,感谢您的回答。我尝试使用此代码,我在父级“/o=ExchangeLabs/ou=Exchange Administrative Group (FYDIHF23SPDLT)/cn=Recipients/cn=b2caf13289112522dcc06fb-300070”中得到了这个字符串,你能帮我吗?
    • 嗨,我找到了问题的解决方案,有必要使用 ExchangeService.ResolveName(stringToResolve) 解析父变量中的名称,这将返回一个包含地址、名称、邮箱类型等属性的集合,等。非常感谢您的帮助!
    猜你喜欢
    • 2013-06-26
    • 1970-01-01
    • 2022-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 2017-10-09
    • 2014-02-14
    相关资源
    最近更新 更多