从Application_NewMail调用的电子邮件生成器正在生成重复的电子邮件

时间:2017-03-24 11:17:08

标签: vba email outlook outlook-vba

我有这个宏从指定文件夹中挑选文件(pdf),然后将其作为附件发送电子邮件。

它通过Application_NewMail运行,然后链接到创建和保存pdf的Excel文件。

它可以工作,但附件在两个单独的电子邮件中发送两次 - 我想写另一个宏来删除重复的电子邮件,但我担心这可能会删除我不想删除的电子邮件。

文件夹路径和电子邮件地址已被占位符替换。

Sub Any_help_appreciated()

Dim objMail As Outlook.MailItem
Dim fso As Object 'Scripting.FileSystemObject
Dim strFile As String
Dim fsoFile 'As Scripting.File
Dim fsoFldr 'As Scripting.Folder
Dim dtNew As Date, sNew As String

Set fso = CreateObject("Scripting.FileSystemObject")

strFile = "FOLDER PATH" 'path to pdf folder

Set fsoFldr = fso.GetFolder(strFile)
dtNew = Now - TimeValue("00:00:30") 'select pdf if created in last 30 secs

For Each fsoFile In fsoFldr.Files

    If fsoFile.DateCreated > dtNew Then

        sNew = fsoFile.Path

        Set objMail = Application.CreateItem(olMailItem)

        With objMail
            .To = "email.address@email.com"
            .Subject = "Subject"
            .BodyFormat = olFormatPlain
            .Attachments.Add sNew
            .Send ' .send
        End With

    End If

Next fsoFile

End Sub

1 个答案:

答案 0 :(得分:1)

您收到两封电子邮件,因为Application_NewMail事件处理程序执行两次,并且连续发送两封电子邮件(只有两封,因为服务器处理电子邮件需要一些时间)。我想这是因为.To的{​​{1}}值是您用于测试的电子邮件帐户。

尝试添加一些检查email.address@email.com的代码是否会执行两次,例如将某些内容写入文本文件,日志等。

或者在处理PDF文件后将其移动到其他文件夹。