У меня более 200 записей в календаре (встречи), и все они содержат исходное сообщение электронной почты в качестве вложения. Мне нужно извлечь адрес электронной почты отправителя из вложения электронной почты в встрече.
Я знаю, как извлечь адрес электронной почты отправителя из объекта MailItem ( MailItem.SenderEmailAddress
), но я не знаю, как получить доступ к этим свойствам, когда сообщение электронной почты теперь является вложением в назначении. У AppointmentItem
объекта есть свойство Attachments, но нигде нет другой информации о том, как получить доступ к свойствам в объекте Attachments. Попробовал AppointmentItem.Attachments.item(1).SenderEmailAddress и получил 'object not supported...'
решение1
Вы можете сохранить вложение .msg, открыть его как почтовый элемент, а затем прочитать свойство mailitem.
Option Explicit ' Consider this mandatory
' Tools | Options | Editor tab
' Require Variable Declaration
' If desperate declare as Variant
Private Sub saveAndRetrievePropertyOfAttachedMail()
Dim sPath As String
' the selected item may not be an AppointmentItem
Dim oItem As Object
sPath = ""
Set oItem = ActiveExplorer.Selection.Item(1)
If TypeName(oItem) = "AppointmentItem" Then
Debug.Print oItem.subject
' sPath is initially blank
' There are risks with public variables.
' This is a slightly awkward way to avoid declaring sPath as a public variable
saveAttachmentsToDriveFolder oItem, sPath
returnPropertiesOfAttachmentInDriveFolder sPath
End If
End Sub
Sub saveAttachmentsToDriveFolder(objItem, strPath)
Dim fso As Object
Dim fldTemp As Object
Dim objAtt As Object
Dim strFile As String
Set fso = CreateObject("Scripting.FileSystemObject")
' This is a default folder everyone should have.
' You may use another folder.
' Kill the files when you are done or delete manually
Set fldTemp = fso.GetSpecialFolder(2) ' TemporaryFolder
Debug.Print fldTemp
strPath = fldTemp.Path & "\"
Debug.Print strPath
For Each objAtt In objItem.Attachments
strFile = strPath & objAtt.FileName
Debug.Print strFile
objAtt.SaveAsFile strFile
Next
End Sub
Sub returnPropertiesOfAttachmentInDriveFolder(strAttachmentFolder)
Dim objFileSystem As Object
Dim objFolder As Object
Dim objFiles As Object
Dim objFile As Object
Dim objItem As Object
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFileSystem.GetFolder(strAttachmentFolder)
Set objFiles = objFolder.Files
For Each objFile In objFiles
If objFileSystem.GetExtensionName(objFile) = "msg" Then
'Open msg file
Set objItem = Session.OpenSharedItem(objFile.Path)
Debug.Print objItem.SenderEmailAddress
End If
Next
End Sub