为什么Attachments.Count在带附件的传入邮件上返回0?

时间:2018-03-26 02:56:18

标签: vba outlook outlook-vba

我尝试使用Outlook 2010自动将附件保存到本地文件夹。

当我第一次创建规则并将其应用于所有收件箱时,它可以正常工作。它不能处理传入的邮件(没有保存文件)。

我尝试添加一些奇怪的代码并解决了错误,因此脚本运行了。

Public Sub saveAttachtoDisk(itm As Outlook.MailItem)

Dim objAtt As Outlook.Attachment
Dim saveFolder As String
    saveFolder = "C:\temp"
Dim dateFormat As String
    dateFormat = Format(itm.ReceivedTime, "yyyy-mm-dd Hmm ")
For Each objAtt In itm.Attachments
    objAtt.SaveAsFile saveFolder & "\" & dateFormat & objAtt.DisplayName
Next

End Sub

Outlook似乎无法识别传入邮件的附件。我尝试添加" MsgBox MyMail.Attachments.Count"它返回0。

2 个答案:

答案 0 :(得分:0)

将您的Outlook规则替换为Items.ItemAdd Event (Outlook),请参阅示例

Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
    Dim olNs As Outlook.NameSpace
    Dim Inbox  As Outlook.MAPIFolder

    Set olNs = Application.GetNamespace("MAPI")
    Set Inbox = olNs.GetDefaultFolder(olFolderInbox)
    Set Items = Inbox.Items
End Sub

Private Sub Items_ItemAdd(ByVal Item As Object)
    If TypeOf Item Is Outlook.MailItem Then
        saveAttachtoDisk Item ' call sub
    End If
End Sub
  

Application.Startup Event (Outlook) Items.ItemAdd Event (Outlook)

           

Items.ItemAdd Event (Outlook) 在将一个或多个项目添加到指定集合时发生。当大量项目一次添加到文件夹时,此事件不会运行。 Microsoft Visual Basic Sc​​ripting Edition(VBScript)中不提供此事件。

           

Application.Startup Event (Outlook) 在Microsoft Outlook启动时发生,但在加载所有加载项程序之后。

     

答案 1 :(得分:0)

我终于找到了原因。如果我想自动保存附件,似乎不能使用IMAP。我切换到POP3,一切正常。