我使用Outlook :: _ MailItem对象的get_SenderEmailAddress()来获取发件人的电子邮件地址。但是,如果用户是活动目录用户,那么recipientitem.address将如下所示:/o = organizationg/ou = exchange administrative group/cn = recipients/cn = xxxxxxxxxx。如果用户是活动目录用户,如何获取发件人的电子邮件地址?
是否有任何其他方式获得发件人的电子邮件地址?
我使用Outlook :: _ MailItem对象的get_SenderEmailAddress()来获取发件人的电子邮件地址。但是,如果用户是活动目录用户,那么recipientitem.address将如下所示:/o = organizationg/ou = exchange administrative group/cn = recipients/cn = xxxxxxxxxx。如果用户是活动目录用户,如何获取发件人的电子邮件地址?
是否有任何其他方式获得发件人的电子邮件地址?
这看起来像一个非常有效的电子邮件地址类型“EX”(而不是“SMTP”)。
如果您想要SMTP地址,请使用MailItem.Sender.GetExchangeUser().PrimarySmtpAddress
。准备好处理空值和例外。 但首先检查MailItems.SenderEmailType
属性 - 如果它是“SMTP”,则仍然可以使用SenderEmailAddress
。
我正在使用它来获取发件人邮件地址。
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;
}
}
的[观VBA的MailItem属性SenderEmailAddress无法正常返回地址]可能的复制(https://stackoverflow.com/questions/25746770/outlook-vba-mailitem-property-senderemailaddress-not-returning-address-correctly ) – niton