保存附件到outlook文件夹

时间:2011-12-21 13:15:12

标签: email-attachments directory outlook-vba

我从以前的电子邮件提供商处收到了一些电子邮件,我已将其转发到我的Outlook 2010收件箱文件夹Received

我遇到的问题是原始电子邮件已作为附件发送而非作为转发!所以我想做的是:

  1. 打开Received文件夹中的邮件&运行
  2. 的VBA代码
  3. Received文件夹中的转发邮件中提取附件,并将该附件保存到Forwarded文件夹
  4. 删除Received文件夹中的转发邮件。
  5. 我对Outlook VBA代码一无所知,所以我甚至没有起点!

    任何助手都将不胜感激!

2 个答案:

答案 0 :(得分:1)

我使用Outlook Attachment Remover Add-In删除附件并将其保存在文件系统中。我主要用它来减少我的配置文件在服务器上需要的空间。 一个很棒的事情是该工具添加了一个指向邮件原始附件的链接。因此,您仍然可以打开附件,但随后会从文件系统中打开。

答案 1 :(得分:0)

使用我之前的VBA Code to save an attachment (excel file) from an Outlook email that was inside another email as an attachment代码,这个Outlook VBA应该可以解决问题。

请确保

  • 您的文件夹转发已收到确实存在于收件箱下。
  • 该代码需要一个目录C:\temp\来处理嵌入的电子邮件

    Sub SaveOlAttachments()
    
    Dim olFolder As MAPIFolder
    Dim olFolder2 As MAPIFolder
    Dim msg As MailItem
    Dim msg2 As MailItem
    Dim strFilePath As String
    Dim strTmpMsg As String
    
    'path for creating attachment msg file for stripping
    strFilePath = "C:\temp\"
    strTmpMsg = "KillMe.msg"
    
    'My testing done in Outlok using a "temp" folder underneath Inbox
    Set olFolder = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
    Set olFolder2 = olFolder.Folders("Forwarded")
    Set olFolder = olFolder.Folders("Received")
    
    For Each msg In olFolder.Items
        If msg.Attachments.Count > 0 Then
            If Right$(msg.Attachments(1).FileName, 3) = "msg" Then
                msg.Attachments(1).SaveAsFile strFilePath & strTmpMsg
                Set msg2 = Application.CreateItemFromTemplate(strFilePath & strTmpMsg)
            End If
            msg.Delete
            msg2.Move olFolder2
        End If
    Next
    End Sub
    
相关问题