【问题标题】:Whats the best way to Programmatically Process New Email Messages and Store Attachments以编程方式处理新电子邮件和存储附件的最佳方法是什么
【发布时间】:2011-01-03 08:04:58
【问题描述】:

我有几个客户/供应商通过电子邮件向我分发报告。其中一些文件很大,需要从电子邮件中删除并保存在文件共享中以进行处理,以及控制邮箱大小。

任何人都可以就他们推荐的自动下载和保存附件的方法提供指导。

我在 MS Windows 环境中(客户端和服务器计算机)。电子邮件位于 Microsoft Exchange 2003 电子邮件服务器上。

首选使用 Microsoft 技术以实现跨解决方案 (C#) 的一致性,但我愿意接受任何建议,无论是 C#、VBScript、Perl、Java、我应该购买的组件等。

场景 每天 bob@whysendmereportsbyemail.com 都会向我发送一封主题为“YYYY-MM-DD 的活动报告”的电子邮件,地址为 john@myemailaddress.com

每封电子邮件都有一个名为“ActivityReport-YYYY-MM-DD-HH-MI-SS.xls”的附件,我需要将其保存在我的文件系统中 "C:\FilesFromBob\ActivityReport-YYYY-MM-DD-HH-MI-SS.xls"

提前感谢您的帮助。

【问题讨论】:

    标签: windows email exchange-server exchange-server-2003


    【解决方案1】:

    Exchange 2003 提供了一个 WebDav API,您可以使用它来访问来自用户帐户的电子邮件、联系人等。

    已经有一些关于accessing a user's Exchange inbox 的答案。我以前几乎完全将这种方法用于您概述的情况,一旦您确定了 WebDav API 模型以及请求和响应的结构,提取电子邮件及其附件并不难。

    还有其他方法可以与 Exchange 2003 (outlined on SO here) 交互,但我只尝试了 WebDav 方法,因为它似乎最可靠。

    【讨论】:

      【解决方案2】:

      我终于编写了代码来存储来自 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-16
        • 1970-01-01
        • 1970-01-01
        • 2011-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多