Была создана учетная запись электронной почты Exchange, через которую я буду получать ежедневные электронные письма с тремя разными вложениями Excel.
Каждое вложение Excel необходимо сохранить в одной из трех разных папок.
Можно ли настроить сервер Exchange на автоматическое выполнение этой операции, или я должен запрограммировать сценарий, который отслеживает учетную запись на наличие новых писем?
Я считаю, что это сервер Exchange 2007.
В настоящее время я использую для этой цели скрипт python, он входит в почтовый ящик с POP3, а затем загружает вложения и создает резервные копии электронных писем, с небольшими модами он может очень хорошо удовлетворить ваши потребности, вы можете скомпилировать его с помощью py2exe, если хотите . Вот код.
PS: Этот код был первоначально написан Сурешом Кесмаром (все кредиты ему);)
Боюсь, вам придется сделать это с помощью сценария, поскольку Outlook любит защищать вас от самого себя. Приведенные ниже инструкции взяты из Вот. Я несколько изменил, чтобы применить к вашим таблицам Excel. Имейте в виду, что если они из Excel 2007, вам нужно будет использовать «xlsx» в качестве расширения файла в скрипте.
[vb]Sub SaveAttachmentsToDisk(Item As Outlook.MailItem) Dim olkFolder As Outlook.MAPIFolder, _ olkAttachment As Outlook.Attachment, _ objFSO As Object, _ strRootFolderPath As String, _ strFilename As String, _ intCount As Integer ‘Change the following path to match your environment strRootFolderPath = "z:\www\departments\webreports\" Set objFSO = CreateObject("Scripting.FileSystemObject") Set olkFolder = Application.ActiveExplorer.CurrentFolder If Item.Attachments.Count > 0 Then For Each olkAttachment In Item.Attachments If objFSO.GetExtensionName(LCase(olkAttachment.FileName))
= "xls" Тогда
strFilename = olkAttachment.FileName intCount = 0 Do While True If objFSO.FileExists(strRootFolderPath &
strFilename) Тогда
intCount = intCount + 1 objFSO.deletefile (strRootFolderPath & strFilename) Else Exit Do End If Loop olkAttachment.SaveAsFile strRootFolderPath & strFilename End If Next End If Set objFSO = Nothing Set olkAttachment = Nothing Set olkFolder = Nothing End Sub[/vb]
Вам нужно будет убедиться, что у вас установлен правильный уровень безопасности, чтобы правильно обработать скрипт. В Outlook выберите Инструменты> Макрос> Безопасность. Я выбрал Без проверки безопасности для макросов. Это может быть слишком слабым ограничением для вашей среды; если да, попробуйте следующую максимальную настройку.
Создайте новое правило Outlook (Инструменты> Правила и предупреждения), чтобы отразить ваши изменения. Мое правило ищет новые сообщения с определенного адреса электронной почты и имеет вложение (веб-файл, который я хочу переместить), перемещает сообщение в определенную папку (чтобы я мог иметь резервную копию сообщения / вложения), затем запускает модуль / сценарий выше, чтобы переместить веб-файл в соответствующий общий ресурс samba. Вот как выглядит мое Описание правила:
Apply this rule after the message arrives from joeuser@email.com and which has an attachment and on this machine only move it to the WEBBACKUP folder and run Project1.SaveAttachmentsToDisk
objFSO.deletefile (strRootFolderPath и strFilename)
с участием
strFilename = "Копировать (" & intCount & ") из" & olkAttachment.FileName