Какой лучший способ программно обрабатывать новые сообщения электронной почты и вложения магазина

У меня есть несколько клиентов / поставщиков, которые рассылают мне отчеты по электронной почте. Некоторые из этих файлов огромны, и их необходимо удалить из электронной почты и сохранить в общей папке для обработки, а также для контроля размера почтового ящика.

Может ли кто-нибудь дать рекомендации по их рекомендуемому методу автоматической загрузки и сохранения вложений.

Я нахожусь в среде MS Windows (клиентские и серверные компьютеры). Электронные письма находятся на почтовом сервере Microsoft Exchange 2003.

Предпочитаемое использование технологии Microsoft для согласованности решений (C#), однако я открыт для любых предложений, будь то C#, VBScript, Perl, Java, компоненты, которые я должен приобрести, и т. Д.

Сценарий Каждый день bob@whysendmereportsbyemail.com отправляет мне электронное письмо с темой "Отчет о деятельности для ГГГГ-ММ-ДД" на john@myemailaddress.com

Каждое электронное письмо имеет вложение с именем "Activity Report-YYYY-MM-DD-HH-MI-SS.xls", которое необходимо сохранить в моей файловой системе по адресу "C:\FilesFromBob\ActivityReport-YYYY-MM-DD-HH-MI-". SS.xls"

Спасибо заранее за любую помощь.

2 ответа

Exchange 2003 предоставляет API WebDav, который вы можете использовать для доступа к электронной почте, контактам и т. Д. Из учетной записи пользователя.

Есть несколько ответов о доступе к почтовому ящику пользователя Exchange в SO. Ранее я использовал этот подход почти для точно описанной ситуации, и как только вы разработали модель WebDav API и структуру запросов и ответов, не составит труда извлечь электронные письма и их вложения.

Существуют и другие способы взаимодействия с Exchange 2003 (об этом рассказано в SO), но я попробовал только подход WebDav, потому что он показался мне наиболее надежным.

Наконец-то я написал код для хранения сообщений из Outlook. К сожалению, этот код запускается из Outlook, поэтому Outlook должен быть открыт.

Я еще не исследовал, как планировать забег, но теперь это легко сделать.

Sub SaveOutlookFileAttachments()


Dim oStores As Outlook.Stores
Dim oStore As Outlook.Store
Dim oFolders As Outlook.Folders
Dim oFolder As Outlook.Folder
Dim destFolder As String
Dim oItems As Outlook.Items
Dim oMsg As Outlook.MailItem
Dim oAttachments As Outlook.Attachments
Dim oAttachment As Outlook.Attachment
Dim oExplorer As Outlook.Explorer


destFolder = "\\NetworkShare\OrderDetailReport\"

On Error Resume Next
Set oStores = Application.Session.Stores

For Each oStore In oStores
    If oStore.DisplayName = "Inbox" Then
        oFolders = oStore.GetSearchFolders
        For Each oFolder In oFolders
        oItems = oFolder.Items
            For Each oMsg In oItems
                oAttachments = oMsg.Attachments
                For Each oAttachment In oAttachments
                    If InStr(1, oAttachment.FileName, "orderdetail_", vbTextCompare) Then
                        'MsgBox ("This File Needs to be Saved: " & oAttachment.FileName)
                        oAttachment.SaveAsFile (destFolder & oAtch.DisplayName)
                    End If
                Next
            Next

        Next

    End If

Next


End Sub
Другие вопросы по тегам