我使用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地址?
答案 0 :(得分:2)
此代码应该这样做:
string senderEmailAddress;
if (mi.SenderEmailType == "EX")
{
senderEmailAddress = emailItem.Sender.GetExchangeUser().PrimarySmtpAddress;
}
else
{
senderEmailAddress = emailItem.SenderEmailAddress;
}
其中:
emailItem
是MailItemClass
emailItem.SenderEmailType
是Outlook项目发件人的电子邮件地址的类型的字符串表示
GetExchangeUser
返回ExchangeUser
对象,如果地址对应于Exchange用户,则表示AddressEntry
从那里我们可以检索PrimarySmtpAddress
(string
)。
这适用于Outlook 2010及更新版本。