从多个附件电子邮件中提取嵌套文件

时间:2019-03-27 21:42:38

标签: vba outlook

我经常收到30多封带有嵌套PDF文件的电子邮件。我需要一个VBA代码,它将所有嵌套的PDF文件复制到Outlook外部的文件夹中。有人可以向我指出正确的方向。

示例:

Main Email
   Attached email
      PDF attachment
   Attached email
      PDF attachment
   Attached email
      PDF attachment
   Attached email
      PDF attachment
   Etc...

如何通过一次操作将所有嵌套的PDF复制到Outlook外部的文件夹中?

预先感谢您的指导。

1 个答案:

答案 0 :(得分:0)

Outlook不允许您直接访问嵌入式邮件附件-您需要先使用Attachment.SaveAsFile保存它们,然后使用Namespace.OpenSharedItem打开MSG文件。

如果可以选择使用Redemption(我是作者),它将公开RDOAttachmentEmbeddedMsg属性,该属性将嵌入式邮件附件作为RDOMail对象返回:

set OutlookMsg = Application.ActiveExplorer.Selection(1)

set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set msg = Session.GetRDOObjectFromOutlookObject(OutlookMsg)
ProcessMessage(msg)

sub ProcessMessage(msg)
  for each attach in msg.Attachments
    if attach.Type = olEmbeddedItem Then
      ProcessMessage(attach.EmbeddedMsg)
    elseif attach.Type = olByValue Then
      attach.SaveAsFile "c:\temp\" & attach.FileName
    End If
  next
end sub