如何使用Outlook互操作检索发件人smtp电子邮件地址?

时间:2018-02-13 05:30:40

标签: c# .net email outlook

我使用c#和Microsoft Outlook interop outlook dll从Outlook(Exchange)读取和检索邮件。

我在解析发件人电子邮件地址时遇到问题,因为代码返回的是Exchange地址而不是普通的电子邮件ID。我要检索的内容与username@abc.com类似,但我的代码输出是电子邮件的Exchange地址:

  

(/ O = EXCHANGELABS / OU = EXCHANGE ADMINISTRATIVE GROUP   (XXXXXXXXXXX)/ CN = RECIPIENTS / CN = XXXXXXX32AD740E69184DC03B2A406F4-XXX   XXX)

我尝试过的代码:

emailItem.Sender

emailItem.SenderEmailAddress

如何将Exchange地址转换为smtp地址或如何只检索smtp地址?

1 个答案:

答案 0 :(得分:2)

此代码应该这样做:

string senderEmailAddress;

if (mi.SenderEmailType == "EX")
{
    senderEmailAddress = emailItem.Sender.GetExchangeUser().PrimarySmtpAddress;                    
}
else
{
    senderEmailAddress = emailItem.SenderEmailAddress;
}

其中:

这适用于Outlook 2010及更新版本。