我正在使用Outlook :: _ MailItem对象的get_SenderEmailAddress()来获取发件人的电子邮件地址。但如果用户是活动目录用户,则recipientitem.address如下所示: / o = organizationg / ou = exchange administrative group / cn = recipients / cn = xxxxxxxxxx 。
有没有其他方法可以获取发件人的电子邮件地址?
答案 0 :(得分:0)
这看起来像"EX"
类型的完全有效的电子邮件地址(而不是“SMTP”)。
如果您需要SMTP地址,请使用MailItem.Sender.GetExchangeUser().PrimarySmtpAddress
。准备好处理空值和异常。
但首先检查MailItems.SenderEmailType
属性 - 如果是“SMTP”,您仍然可以使用SenderEmailAddress
。
答案 1 :(得分:0)
我用它来获取发件人邮件地址。
private string GetSenderSMTPAddress(Outlook.MailItem mail)
{
try
{
string PR_SMTP_ADDRESS =
@"http://schemas.microsoft.com/mapi/proptag/0x39FE001E"; if (mail == null)
{
throw new ArgumentNullException();
}
if (mail.SenderEmailType == "EX")
{
Outlook.AddressEntry sender =
mail.Sender;
if (sender != null)
{
//Now we have an AddressEntry representing the Sender
if (sender.AddressEntryUserType ==
Outlook.OlAddressEntryUserType.
olExchangeUserAddressEntry
|| sender.AddressEntryUserType ==
Outlook.OlAddressEntryUserType.
olExchangeRemoteUserAddressEntry)
{
//Use the ExchangeUser object PrimarySMTPAddress
Outlook.ExchangeUser exchUser =
sender.GetExchangeUser();
if (exchUser != null)
{
return exchUser.PrimarySmtpAddress;
}
else
{
return null;
}
}
else
{
return sender.PropertyAccessor.GetProperty(
PR_SMTP_ADDRESS) as string;
}
}
else
{
return null;
}
}
else
{
return mail.SenderEmailAddress;
}
}
catch (Exception ex)
{
return null;
}
}