【问题标题】:Send mails in bulk rather than sending each mail immediately upon completion批量发送邮件,而不是在完成后立即发送每封邮件
【发布时间】:2017-06-27 15:14:38
【问题描述】:

我有一个循环来发送大约 75 封电子邮件,每封电子邮件都有一个针对每个收件人的单独附件。这行得通,但我想知道如何创建所有这些,并一次性发送它们,而不是一次喂它们。

我知道我可以使用.display 而不是.send 在 Outlook 中显示电子邮件,但是有没有办法使用 VBA 暂时禁用发送电子邮件,然后在创建所有邮件后启用它?

我的代码看起来像这样 -

Dim employee_name As Variant
Dim file_path As String
Dim file_ext As String
Dim AGENT_FILE As String
Dim e As Variant
Dim email As Variant
Dim a As Integer

a = "0"
Sheets("EMAILS").Select
employee_name = Range("A1:A76").Value

file_path = "H:\Email TEST\"
file_ext = ".xlsx"

Dim OutApp As Object
Dim OutMail As Object
Dim distributionList As String

Set OutApp = CreateObject("Outlook.Application")

For Each e In employee_name

    If e <> "" Then 

        Set OutMail = OutApp.CreateItem(0)

        With Sheets("EMAILS").Select
            a = a + 1
            email = Range("B" & a).Value
            AGENT_FILE = file_path & e & file_ext

            On Error Resume Next
            With OutMail
                .To = email
                .CC = ""
                .BCC = ""
                .Subject = "Daily Stats"
                .Body = "Hello ," & vbCrLf & _
                  vbCrLf & _
                  "Attached are your daily stats." & vbCrLf & _
                  vbCrLf & _
                  "Regards, " & vbCrLf & _
                  "Oliver Lockett"
                .Attachments.Add AGENT_FILE
                .send
            End With
        End With

        Set OutMail = Nothing

    End If

Next

Set OutApp = Nothing

【问题讨论】:

  • 您总是可以sendat=now ... .DeferredDeliveryTime=dateAdd("s", 30, sendat) 将它们保存在 oubox 中

标签: vba excel outlook


【解决方案1】:

几年前我也有类似的东西......

我更喜欢使用 .save 而不是 .send。因此,所有电子邮件都保存在草稿下....一旦所有电子邮件都保存了....我在 Outlook 中有一个宏来发送所有草稿... 这可以在这里实现

http://www.techrepublic.com/forum/questions/101-309127/send-all-mails-from-my-drafts-folder-at-one-go-in-outlook-2003

【讨论】:

  • 是的 .send 在我的环境中被阻止,.save 效果很好。然后,当您打开 Outlook 时,您保存的所有草稿都可以发送。
【解决方案2】:

您为什么要这样做?发送是异步的,它不会阻塞你的代码。

【讨论】:

  • 当然,它不会阻止它,但是一个接一个地发送的 Outlook 开始消耗系统资源并减慢一切。我宁愿运行代码,然后让它们一次全部发送。这是可能的
  • 除非您在非常快的网络上有一台非常慢的机器,否则与执行代码相比,Outlook 后台处理程序一次异步发送一条消息所造成的性能损失可以忽略不计。当您调用 MailItem.Save 与 MailItem.Send 时,您是否真正分析过您的代码?
猜你喜欢
  • 2020-07-28
  • 2016-10-13
  • 2014-07-27
  • 1970-01-01
  • 2020-05-22
  • 2016-12-07
  • 2013-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多