2010-01-09 76 views
6

我有幾個客戶/供應商通過電子郵件向我分發報告。其中一些文件非常龐大,需要從電子郵件中刪除並保存在文件共享中進行處理,以及控制郵箱大小。什麼是以編程方式處理新電子郵件和商店附件的最佳方式

任何人都可以提供有關自動下載和保存附件的推薦方法的指導。

我處於MS Windows環境(客戶端&服務器計算機)。電子郵件位於Microsoft Exchange 2003電子郵件服務器上。

首選使用微軟技術的跨解決方案的一致性(C#),但是我願意接受任何建議,無論是C#,VBScript中,過Perl,Java,組件我應該購買等。

方案 每日[email protected]在發送主題爲「爲YYYY-MM-DD活動報告」電子郵件給我 [email protected]

每封電子郵件中有一個名爲「ActivityReport-YYYY-MM-DD-附件HH-MI-SS.xls「,我需要在我的文件系統上保存在 」C:\ FilesFromBob \ ActivityReport-YYYY-MM-DD-HH-MI-SS.xls「

在此先感謝您的幫助。

回答

3

Exchange 2003提供了一個WebDav API,您可以使用該API訪問用戶帳戶中的電子郵件,聯繫人等。

關於SO的accessing a user's Exchange inbox已有幾個答案。我以前使用過這種方法幾乎完全符合您概述的情況,一旦您計算出WebDav API模型以及請求和響應的結構,就不難獲取電子郵件及其附件。

還有其他方式與Exchange 2003(outlined on SO here)進行交互,但我只嘗試過WebDav方法,因爲它似乎是最可靠的。

0

我終於寫了代碼來存儲來自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 
相關問題