Outlook: Как получить электронную почту из поля Получатель? - PullRequest
8 голосов
/ 18 февраля 2011

Я пытаюсь получить адрес электронной почты, напечатанный в поле Кому окна составления почты.

Я пытаюсь получить свойство Address Получателя, которое, согласно 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 ]

5 голосов
/ 18 февраля 2011

Можете ли вы попробовать это?

emails.Add(rec.AddressEntry.Address);

Ссылочная ссылка

РЕДАКТИРОВАТЬ:

У меня нет подходящей среды для тестирования, поэтомуЯ просто догадываюсь обо всем этом, но как насчет

string email1Address = rec.AddressEntry.GetContact().Email1Address;

или .Email2Adress или .Email3Address

Также есть,

rec.AddressEntry.GetExchangeUser().Address

, что вы могли быхочу попробовать.

3 голосов
/ 13 марта 2015

Попробуйте это

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 здесь

Я использовал тот же способ для получения адресов электронной почты в моем приложении и его работе.1008 *

2 голосов
/ 22 марта 2011

AddressEntry также имеет свойство SMTPAddress, которое предоставляет основной адрес SMTP пользователя.

0 голосов
/ 13 апреля 2014

Я не знаю, помогает ли это или насколько точно

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
            {

            }
        }
...