2010-01-09 6 views
6

Ich habe mehrere Kunden/Anbieter, die Berichte an mich per E-Mail verteilen. Einige dieser Dateien sind enorm und müssen aus der E-Mail entfernt und zur Bearbeitung auf einer Dateifreigabe gespeichert werden. Außerdem müssen Sie die Postfachgröße steuern.Was ist der beste Weg, um neue E-Mail-Nachrichten und Store Attachments programmatisch zu verarbeiten?

Kann jemand Anleitungen zu der empfohlenen Methode zum automatischen Herunterladen und Speichern von Anlagen geben.

Ich bin in einer MS Windows Umgebung (Client & Server Computer). E-Mails befinden sich auf einem Microsoft Exchange 2003-E-Mail-Server.

Bevorzugte Verwendung von Microsoft-Technologie für Konsistenz über Lösungen (C#), aber ich bin für alle Vorschläge offen, sei es C#, VBScript, Perl, Java, Komponenten I kaufen sollte, etc ..

Szenario Jeder Day [email protected] sendet eine E-Mail mit dem Betreff "Tätigkeitsbericht für YYYY-MM-DD" mir bei [email protected]

Jede E-Mail hat eine Anlage mit dem Namen „ActivityReport-YYYY-MM-DD- HH-MI-SS.xls ", die ich in meinem Dateisystem unter speichern muss" C: \ FilesFromBob \ ActivityReport-JJJJ-MM-TT-HH-MI-SS.xls "

Vielen Dank im Voraus für jede Hilfe.

Antwort

3

Exchange 2003 bietet eine WebDav-API, mit der Sie auf E-Mails, Kontakte usw. von einem Benutzerkonto aus zugreifen können.

Es gibt ein paar Antworten über accessing a user's Exchange inbox auf SO bereits. Ich habe diesen Ansatz früher für fast genau die Situation verwendet, die Sie skizzieren, und sobald Sie das WebDav-API-Modell und die Struktur der Anfragen und Antworten ausgearbeitet haben, ist es nicht schwer, E-Mails und ihre Anhänge zu extrahieren.

Es gibt andere Möglichkeiten, mit Exchange 2003 zu interagieren (outlined on SO here), aber ich habe nur versucht, den WebDAV-Ansatz, weil es am zuverlässigsten schien.

0

Ich schrieb schließlich den Code zum Speichern von Nachrichten aus Outlook Leider läuft dieser Code in Outlook, so dass Outlook geöffnet werden muss.

ich noch nicht untersucht, wie der Lauf zu planen, aber jetzt ist es einfach

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 
zu tun