我有几个客户/供应商通过电子邮件向我发送报告。其中一些文件非常庞大,需要从电子邮件中删除并保存在文件共享中进行处理,以及控制邮箱大小。
任何人都可以就其推荐的自动下载和保存附件的方法提供指导。
我在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”
提前感谢您的任何帮助。
答案 0 :(得分:3)
Exchange 2003提供了一个WebDav API,您可以使用它来访问用户帐户中的电子邮件,联系人等。
关于SO的accessing a user's Exchange inbox已经有一些答案了。我之前使用过这种方法几乎就是你概述的情况,一旦你计算出WebDav API模型以及请求和响应的结构,提取电子邮件及其附件就不算太难了。
还有其他方法可以与Exchange 2003(outlined on SO here)进行交互,但我只尝试过WebDav方法,因为它看起来最可靠。
答案 1 :(得分: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