Цитата:
Сообщение от
DSPIC
Чем не очень удобен 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