MS Outlook 2010 .SenderEmailAddress возвращает огромную строку символов

Я искал и искал ответ, поэтому я опубликую это здесь. Я пытаюсь создать макрос, который будет перемещать сообщения двухнедельной давности из моего почтового ящика в определенную папку, которую я создал для каждого из моих коллег. Макрос успешно перебирает все входящие сообщения старше двух недель. Однако, когда я использую .SenderEmailAddress, он перенастраивает огромную строку символов вместо ###@####.com. Как мне просто получить адрес электронной почты отправителя?

Не указывая точную строку (проблема безопасности), вот что я получаю с «X» вместо некоторых символов:

/o=XXXXXXX/ou=Exchange Administrative Group (XXXXXXXXXXXXXXX)/cn=Recipients/cn=XXXXX@XXXXX

В конце строки находится текст строки темы.

Любая помощь будет принята с благодарностью! :-)


person MultiGuy    schedule 05.06.2013    source источник
comment
добавьте соответствующую часть кода, который у вас уже есть   -  person Kazimierz Jawor    schedule 05.06.2013


Ответы (2)


Это совершенно правильный адрес типа EX (в отличие от SMTP).

Попробуйте использовать MailItem.Sender.GetExchangeUser().PrimarySmtpAddress.

Конечно, вам нужно будет проверить наличие нулей/ошибок, если отправитель не является пользователем Exchange или если адрес не может быть получен.

person Dmitry Streblechenko    schedule 05.06.2013
comment
Ах хорошо. Прикинул, что-то в этом роде. Я ценю это! - person MultiGuy; 05.06.2013
comment
Вот почему я люблю SE! - person Sam V; 10.08.2016
comment
Редактировать: для людей, читающих это, я получаю ошибки в некоторых электронных письмах, поэтому я проверяю, начинается ли MailItem.SenderEmailAddress с /O=EXCHANGE, прежде чем пытаться получить Sender.GetExchangeUser().PrimarySmtpAddress. - person Sam V; 10.08.2016
comment
Не проверяйте префикс, проверьте свойство AddressEntry.Type — оно будет EX для записей GAL и SMTP для одноразовых записей адреса SMTP. - person Dmitry Streblechenko; 10.08.2016

Эта документация MSDN поможет .

person Gokul    schedule 03.06.2017