Outlook:如何从收件人字段中获取电子邮件?

时间:2011-02-18 02:14:26

标签: c# visual-studio outlook vsto

我正在尝试将电子邮件地址输入到撰写邮件窗口的 To 字段中。

我尝试获取收件人的地址属性,根据VS,应该给我发电子邮件。

我收到的字符串看起来像这样:

"/c=US/a=att/p=Microsoft/o=Finance/ou=Purchasing/s=Furthur/g=Joe"

如何在收件人字段中获取电子邮件地址?

到目前为止我的代码:

List <string> emails = new List<string>();

if (thisMailItem.Recipients.Count > 0)
{
    foreach (Recipient rec in thisMailItem.Recipients)
    {
        emails.Add(rec.Address);
    }
}
return emails;

4 个答案:

答案 0 :(得分:5)

你能试试吗?

emails.Add(rec.AddressEntry.Address);

Reference link

编辑:

我没有合适的测试环境所以我只是猜测这一切,但是

怎么样
string email1Address = rec.AddressEntry.GetContact().Email1Address;

.Email2Adress.Email3Address

还有,

rec.AddressEntry.GetExchangeUser().Address

您可能想尝试一下。

答案 1 :(得分:3)

试试这个

private string GetSMTPAddressForRecipients(Recipient recip)
        {
            const string PR_SMTP_ADDRESS =
                "http://schemas.microsoft.com/mapi/proptag/0x39FE001E";

            PropertyAccessor pa = recip.PropertyAccessor;
            string smtpAddress = pa.GetProperty(PR_SMTP_ADDRESS).ToString();
            return smtpAddress;

        }

这可以在MSDN here

上找到

我使用相同的方法在我的应用程序及其工作中获取电子邮件地址。

答案 2 :(得分:2)

AddressEntry还有一个SMTPAddress属性,用于公开用户的主要smtp地址。

答案 3 :(得分:0)

我不知道这是否有用或有多准确

it is, a sample

    private string GetSmtp(Outlook.MailItem item)
        {
            try
            {
                if (item == null || item.Recipients == null || item.Recipients[1] == null) return "";
                var outlook = new Outlook.Application();
                var session = outlook.GetNamespace("MAPI");
                session.Logon("", "", false, false);
                var entryId = item.Recipients[1].EntryID;
                string address = session.GetAddressEntryFromID(entryId).GetExchangeUser().PrimarySmtpAddress;
                if (string.IsNullOrEmpty(address))
                {
                    var rec = item.Recipients[1];
                    var contact = rec.AddressEntry.GetExchangeUser();
                    if (contact != null)
                        address = contact.PrimarySmtpAddress;
                }
                if (string.IsNullOrEmpty(address))
                {
                    var rec = item.Recipients[1];
                    var contact = rec.AddressEntry.GetContact();
                    if (contact != null)
                        address = contact.Email1Address;
                }
                return address;
            }
            finally
            {

            }
        }