Outlook 2007 vsto加载项.获取电邮发件人地址

And*_*huk 10 c# vsto outlook-2007 outlook-addin

我有一个VSTO Outlook 2007加载项.当新邮件进入收件箱时,我正在尝试获取发件人电子邮件地址.
为此,我使用以下代码:

void inboxItems_ItemAdd(object Item)
{     
    Outlook.MailItem mailItem = Item as Outlook.MailItem;

    if (mailItem != null)
        string emailAdress = mailItem.SenderEmailAddress;  
}
Run Code Online (Sandbox Code Playgroud)

问题是当电子邮件来自同一个域时,emailAdress包含LDAP地址

/ O =第一个组织/ OU =第一个行政组/ CN = RECIPIENTS/CN = ADMINISTRATOR

虽然我想获得像这样的SMTP地址

administrator@orgname.com

我的问题是如何从内部域获取电子邮件的SMTP发件人地址?

PS
在Outlook 2010中,可以使用Sender属性解决此问题.但它在2007年不受支持.

item.Sender.GetExchangeUser().PrimarySmtpAddress
Run Code Online (Sandbox Code Playgroud)

GTG*_*GTG 15

在Outlook 2007中,您可以这样做:

private string GetSmtpAddress(Outlook.MailItem oItem)
{
    Outlook.Recipient recip;
    Outlook.ExchangeUser exUser;
    string sAddress;

    if (oItem.SenderEmailType.ToLower() == "ex")
    {
        recip = Globals.ThisAddIn.Application.GetNamespace("MAPI").CreateRecipient(oItem.SenderEmailAddress);
        exUser = recip.AddressEntry.GetExchangeUser();
        sAddress = exUser.PrimarySmtpAddress;
    }
    else
    {
        sAddress = oItem.SenderEmailAddress.Replace("'", "");
    }
    return sAddress;
}
Run Code Online (Sandbox Code Playgroud)