如果用户是活动目录用户,如何获取发件人的电子邮件地址?

时间:2017-05-25 10:56:04

标签: outlook sender

我正在使用Outlook :: _ MailItem对象的get_SenderEmailAddress()来获取发件人的电子邮件地址。但如果用户是活动目录用户,则recipientitem.address如下所示: / o = organizationg / ou = exchange administrative group / cn = recipients / cn = xxxxxxxxxx

有没有其他方法可以获取发件人的电子邮件地址?

2 个答案:

答案 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;
        }
    }