![]() |
#7 |
Moderator
|
Способ получения адреса отправителя, рассмотренный выше, может вызывать неудобство, связанное с тем, что Outlook запрашивает у пользователя разрешение на доступ к адресной информации. Особенно критично это может быть, например, при пакетной обработке, когда пользователя нет и соответственно он не может подтвердить "10-минутный доступ". Либо длительность сложной обработки может превышать лимит "10 минут".
Один из способов избежать необходимости подтверждения доступа состоит в использовании библиотеки Redemption, которая доступна для скачивания здесь: http://www.dimastr.com/redemption/ Ниже привожу тестовый джоб по мотивам функции R_GetSenderAddress - третьей по счету на страничке уважаемой госпожи Мошер (см. по ссылке, любезно приведенной DSPIC ранее в этой ветке: http://www.outlookcode.com/d/code/getsenderaddy.htm ). Получившийся код оказался даже еще проще, чем оригинал, за счет того, что годы идут, Redemption развивается и в нем появляются новые полезные методы (полагаю, что в версии dll, имевшейся в распоряжении Сью на момент написания книги отсутствовал метод SMTPAddress и поэтому ей пришлось немножко сложно выкручиваться). X++: // для тестирования Outlook должен быть уже запущен заранее // и в нем открыто (двойным щелчком) произвольное письмо static void test_getMail_fromRedemption(Args _args) { COM outlook; // Outlook.Application COM activeInspector; // Outlook.Inspector COM objMsg; // Outlook.MailItem COM objSMail; // Redemption.SafeMailItem COM objSenderAE; // Redemption.AddressEntry ; outlook = COM::getObject('Outlook.Application'); activeInspector = outlook.ActiveInspector(); objMsg = activeInspector.CurrentItem(); objSMail = new COM('Redemption.SafeMailItem'); objSMail.Item( objMsg ); objSenderAE = objSMail.Sender(); if (objSenderAE) info( strfmt('Адрес отправителя: %1', objSenderAE.SMTPAddress() )); } |
|
Теги |
документация |
|
|