You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA批量提交邮件至Outlook:能否一次性发送提升效率?

批量提交Outlook邮件并一次性发送的实现方案

可以通过将邮件先保存至发件箱,再触发Outlook批量发送的方式实现,这种方法比你当前循环单封发送的效率高很多——能避免每封邮件发送时的重复网络交互和单封处理开销,大幅缩短总耗时。

实现步骤

  1. 批量创建邮件并保存到发件箱
    把代码里的.Send方法替换为.Save,这样每封邮件会被保存到Outlook的发件箱队列中,而不是立即发送。修改后的循环代码如下:

    Do
        emailBody = "email body"
    
        Set OutlookMail = OutlookApp.CreateItem(olMailItem)
        With OutlookMail
            .SentOnBehalfOfName = "test@test.com"
            .To = "test@test.com"
            .BCC = "test@test.com"
            .BodyFormat = olFormatHTML
            .Subject = "Subject"
            .HTMLBody = "<font style=""font-family: Poppins; font-size: 11pt;"">" & emailBody & "</font>"
            .Save ' 保存至发件箱,暂不发送
        End With
        
        currRow = currRow + 1
        
    Loop While currRow < 2000
    
  2. 触发批量发送
    所有邮件创建完成后,调用Outlook的SendAndReceive方法,强制触发发件箱内所有待发邮件的发送:

    OutlookApp.SendAndReceive True
    

    参数True表示等待发送/接收操作完成后再继续执行代码。

效率对比

  • 你当前的循环单封发送方式,每封邮件都要经历创建、服务器连接、发送、确认的完整流程,几千封邮件的网络延迟和单封处理开销会累加,导致总耗时长达数小时。
  • 批量保存后一次性发送的方式,Outlook会复用网络连接,将待发邮件打包处理,减少重复的握手、验证等步骤,能把总耗时压缩到原来的几分之一甚至更少。

注意事项

  • 确保Outlook处于运行状态,且发件箱未被锁定;
  • 如果邮件数量超过一万封,建议分批次保存并触发发送(比如每1000封触发一次),避免Outlook内存占用过高;
  • 提前确认Exchange服务器或邮件服务商的批量发送限制,避免触发反垃圾邮件规则。

内容的提问来源于stack exchange,提问作者Ewan Brown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 21:22:48