【问题标题】:How to get sender's email address if user is an active directory user?如果用户是活动目录用户,如何获取发件人的电子邮件地址?
【发布时间】:2017-10-26 00:06:40
【问题描述】:

我正在使用 Outlook::_MailItem 对象的 get_SenderEmailAddress() 来获取发件人的电子邮件地址。但如果用户是 Active Directory 用户,则 recipientitem.address 如下所示:/o=organizationg/ou=exchange 管理组/cn=recipients/cn=xxxxxxxxxx

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

【问题讨论】:

标签: outlook sender


【解决方案1】:

这看起来像是一个完全有效的"EX" 类型的电子邮件地址(而不是“SMTP”)。

如果您需要 SMTP 地址,请使用 MailItem.Sender.GetExchangeUser().PrimarySmtpAddress。准备好处理空值和异常。 但首先检查MailItems.SenderEmailType 属性——如果是“SMTP”,你仍然可以使用SenderEmailAddress

【讨论】:

    【解决方案2】:

    我正在使用它来获取发件人邮件地址。

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

    【讨论】:

      猜你喜欢
      • 2018-03-06
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多