Вы можете использовать метод SaveAs класса MailItem, который сохраняет элемент Microsoft Outlook по указанному пути и в формате указанного типа файла. Если тип файла не указан, используется формат MSG (.msg).
Для обработки всех входящих элементов необходимо подписаться на событие NewMailEx
, которое срабатывает при поступлении нового сообщения в папку «Входящие» и до обработки правил клиента. Вы можете использовать идентификатор записи, возвращенный в массиве EntryIDCollection, чтобы вызвать метод NameSpace.GetItemFromID и обработать элемент. Это событие запускается один раз для каждого полученного элемента, который обрабатывается Microsoft Outlook. Элемент может быть одним из нескольких различных типов элементов, например, MailItem, MeetingItem или SharingItem. Строка EntryIDsCollection содержит идентификатор записи, соответствующий этому элементу.
Private Sub outApp_NewMailEx(ByVal EntryIDCollection As String)
Dim mail As Object
Dim oAttachment As Outlook.Attachment
Set mail = Application.Session.GetItemFromID(EntryIDCollection )
Dim sSaveFolder As String
sSaveFolder = "C:\Temp"
For Each oAttachment In mail.Attachments
oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
Next
End Sub
Другой подход заключается в создании подпрограммы VBA, которую можно назначить правилу. Пример VBA может выглядеть следующим образом:
Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem)
Dim oAttachment As Outlook.Attachment
Dim sSaveFolder As String
sSaveFolder = "C:\Users\DT168\Documents\outlook-attachments\"
For Each oAttachment In MItem.Attachments
oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
Next
End Sub
Подробнее об этом см. В Автоматическая загрузка вложений Outlook в папку с VBA и статья article.