【问题标题】:Save outlook email to my internal drive as .msg file将 Outlook 电子邮件作为 .msg 文件保存到我的内部驱动器
【发布时间】:2019-08-06 15:11:05
【问题描述】:

我正在尝试将 Outlook 电子邮件保存到我的 H:Drive。我希望它作为运行脚本规则,但我无法让它工作。不涉及任何附件,我只需要将其保存为 .msg 文件。如果您找到解决此问题的其他方法,请 lmk。

谢谢

Sub ExtractEmailToFolder2(itm As Outlook.MailItem)

Dim OlApp As Outlook.Application
Set OlApp = New Outlook.Application
Dim Mailobject As Object
Dim Email As String
Dim NS As NameSpace
Dim Folder As MAPIFolder
Set OlApp = CreateObject("Outlook.Application")

Dim fso As Object
Dim fldrname As String
Dim fldrpath As String

' Setup Namespace
  Set NS = ThisOutlookSession.Session
' Display select folder dialog
  Set Folder = NS.PickFolder
' Create Folder File
  Set fso = CreateObject("Scripting.FileSystemObject")

' loop to read email address from mail items.
For Each Mailobject In Folder.Items
fldrpath = "H:\Backup stuff\"
If Not fso.folderexists(fldrpath) Then
    fso.createfolder (fldrpath)
End If

Set objCopy = Mailobject.Copy
objCopy.SaveAs fldrpath & "\" & objCopy.Subject, olMSG

Next
Set OlApp = Nothing
Set Mailobject = Nothing

End Sub

【问题讨论】:

    标签: vba outlook


    【解决方案1】:

    首先,如果您的 VBA 宏按规则运行,则无需创建新的 Outlook Application 实例(在您的示例代码中两次!)。相反,您可以使用全局 Application 属性:

    Sub ExtractEmailToFolder2(itm As Outlook.MailItem)
    
    Dim fso As Object
    Dim fldrname As String
    Dim fldrpath As String
    
    ' Create Folder if required
      Set fso = CreateObject("Scripting.FileSystemObject")
    
    fldrpath = "H:\Backup stuff\"
    If Not fso.folderexists(fldrpath) Then
        fso.createfolder (fldrpath)
    End If
    
    itm.SaveAs fldrpath & "\" & "your_unique_filename.msg", olMSG
    
    Set OlApp = Nothing
    Set Mailobject = Nothing
    
    End Sub
    

    上面显示的示例代码将运行规则所针对的项目保存到指定/硬编码的文件夹中。

    【讨论】:

    • 啊,好吧。不过,我仍然遇到代码问题。 "itm.SaveAs fldrpath & "\" & objCopy.Subject, olMSG",这一行一直在窃听。一旦 Outlook 规则接收到电子邮件,脚本应该保存电子邮件,但每次都会停在脚本的那一行。
    • 确保文件名和路径不包含禁止符号。
    • 嗯,手动输入文件名没有问题。问题是我每天都会收到这封电子邮件,所以我试图在文件名中包含数据。例如,Issuance_Dashboard_8_06_19。第二天将是“ ..._08_07_19。
    【解决方案2】:

    问题:

    • 文件夹检查包含在循环中
    • 文件名中有主题。除非进行某种操作,否则这总是会产生问题。因为它包含 Windows 中文件名中不允许出现的各种字符。

    注意:

    • 将其放入 Outlook 的任何模块中,然后使用 F5 或创建快捷方式运行。

    试试:

    Sub ExtractEmailToFolder2()
    
    
    Dim OlApp As Outlook.Application
    Set OlApp = New Outlook.Application
    Dim Mailobject As Object
    Dim Email As String
    Dim NS As NameSpace
    Dim Folder As MAPIFolder
    Set OlApp = CreateObject("Outlook.Application")
    
    Dim fso As Object
    Dim fldrname As String
    Dim fldrpath As String
    
    ' Setup Namespace
      Set NS = ThisOutlookSession.Session
    ' Display select folder dialog
      Set Folder = NS.PickFolder
    ' Create Folder File
      Set fso = CreateObject("Scripting.FileSystemObject")
    
      fldrpath = "H:\Backup stuff\"
    
    If Not fso.folderexists(fldrpath) Then
        fso.createfolder (fldrpath)
    End If
    
    
    ' loop to read email address from mail items.
    i = 1
    
    For Each Mailobject In Folder.Items
    
        Mailobject.SaveAs fldrpath & "\mail" & i & ".msg", olMsg
        i = i + 1
    
    Next
    Set OlApp = Nothing
    Set Mailobject = Nothing
    
    
    End Sub
    

    【讨论】:

    • 谢谢!!所以你是说保存电子邮件主题是非常具有挑战性的吗?
    • 这并不具有挑战性,您所要做的就是确保在保存时,名称中没有任何文件夹名称中不允许的字符。就像删除文件夹名称中不允许的所有 : 一样。还有长度在限制范围内。
    • 拉取邮件的主题,可以使用mailobject.subject吗?
    • 是的,你可以。 :) .. 如果它解决了您的问题,请接受并支持答案:)
    猜你喜欢
    • 2019-04-24
    • 2021-07-30
    • 1970-01-01
    • 2017-03-02
    • 2015-02-18
    • 2017-05-04
    • 2018-10-16
    • 1970-01-01
    • 2020-02-18
    相关资源
    最近更新 更多