有没有一种基于 Windows 的方法可以自动将 Outlook 2010 中保存的电子邮件附件拉到服务器?我每天都会收到一封带有附件的电子邮件,我会手动将其保存到服务器上的文件夹中。我需要自动执行此过程。
我尝试过的方法
我尝试在 Outlook 中创建规则并为其编写脚本。但它只会将附件保存到我电脑上的本地文件夹中。并且只有在打开 Outlook 时才会保存。我希望它保存到服务器,即使服务器上未打开 Outlook 也会保存。这是我在 Outlook 中保存的脚本
Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
saveFolder = "D:\newfolder"
For Each objAtt In itm.Attachments
If InStr(objAtt.DisplayName, ".xls") Then
objAtt.SaveAsFile saveFolder & "\" & objAtt.DisplayName
End If
Set objAtt = Nothing
Next
End Sub
答案1
运行 VBA 是客户端独有的操作。这意味着您的 PC 必须处于打开状态,并且 Outlook 必须运行且启用脚本。如果您没有运行 Outlook,那么您的愿望就无法实现。也许有一个服务器端解决方案,但这是 serverfault.com 的问题
如果您想要处理特定电子邮件中的附件,我使用以下方法。它在 Outlook 2013 中对我来说非常有效:
Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
saveFolder = "c:\temp"
For Each objAtt In itm.Attachments
objAtt.SaveAsFile saveFolder & "\" & objAtt.DisplayName
Set objAtt = Nothing
Next
End Sub
规则的最后一部分是运行脚本。
对于不熟悉 Outlook VBA 的用户,您需要调出开发人员功能区。
粘贴上面的代码,保存 VBA,然后在规则中引用它。
答案2
如果您的 Outlook 帐户是 POP3 或 IMAP,则您无法在客户端关闭时运行宏或规则,因为除了传入消息之外没有其他方法可以触发您的事件。
如果您在 Exchange 上运行 Outlook,则需要在服务器上为您的帐户创建一条规则,以便在将附件发送到收件箱之前保存附件。该规则将需要 UNC 地址( ,而不是服务器无法识别的\\server\folder
本地映射驱动器地址( )。D:\folder
请记住,您的网络管理员可能出于安全原因禁用了服务器端规则。您应该与他们核实,确保您能够做到这一点。
附加信息:客户端和服务器端规则