![]() |
#3 |
Moderator
|
Чем не очень удобен Outlook в плане программирования, так это тем, что пустяшную тестовую задачку там запустишь не сразу. Пока разберешься со всеми этими фолдерами, инспекторами и эксплорерами...
Приведенная по ссылке процедура заимствована из очень полезной книги Сью Мошер (есть русское издание: http://www.books.ru/shop/books/205770, которое я имел удовольствие почитывать). Я подправил процедуру так, чтобы ее можно было запускать в Outlook и смотреть на результаты (чтобы потом проще воплощалось в X++). Для запуска надо скопировать текст в модуль VBA (находясь в Outlook, нажать Alt+F11). Далее следует открыть любое письмо, затем перейти в редактор VBA и, стоя на тексте процедуры, нажать F5. Процедура последовательно вернет имя отправителя, тело письма и, наконец, желаемый адрес. Код: 'код - VBA для тестового запуска внутри Outlook Sub GetFromAddress() Dim myInspector As Inspector Dim myItem As MailItem Dim objSession As Object Dim strEntryID As String Dim strStoreID As String Dim objCDOMsg As Object Dim strAddress As String Set myItem = Application.ActiveInspector.CurrentItem ' start CDO session Set objSession = CreateObject("MAPI.Session") objSession.Logon "", "", False, False ' pass message to CDO strEntryID = myItem.EntryID strStoreID = myItem.Parent.StoreID Set objCDOMsg = objSession.GetMessage(strEntryID, strStoreID) ' get sender address On Error Resume Next strAddress = objCDOMsg.Sender.Address If Err = &H80070005 Then 'handle possible security patch error MsgBox "The Outlook E-mail and CDO Security Patches are " & _ "apparently installed on this machine. " & _ "You must response Yes to the prompt about " & _ "accessing e-mail addresses if you want to " & _ "get the From address.", vbExclamation, _ "GetFromAddress" End If MsgBox myItem.SenderName MsgBox myItem.Body MsgBox strAddress Set objCDOMsg = Nothing objSession.Logoff Set objSession = Nothing End Sub |
|
Теги |
документация |
|
|