当我们开发了一个VBA应用,很多时候需要让它能够自动批量发送邮件。这时候,我们就需要使用到CDO了。CDO全称Collaboration Data Objects,即协作数据对象,是Office 软件不在产品安装的一部分。它是通过基于COM的API提供对Outlook兼容对象的访问的包。CDO有多个组件,其中Message组件是邮件组件,使用其发送邮件是非常快速的,而且不需要任何附加的安装。
对于一封邮件,通常有邮件标题、发件人、收件人、抄送人、邮件正文、邮件附件等要素。我们就以这几个要素为参数,来设计一个能够发送邮件的函数。
要实现这个函数其实很简单,主要有以下几步:

1) 创建一个CDO.MESSAGE对象。
2) 给CDO对象初始化。将上面提到的邮件主要要素赋给这个CDO对象。
3) 定义STUI为微软服务器网址
4) 配置发送服务器的信息,包括SMTP服务器地址、服务器端口、发送端口、发送方邮箱名称,发送方邮箱密码等。
5) 使用CDO.MESSAGE对象的send发送邮件
6) 释放对象。

对,就这么简单。有以上几步,我们的VBA应用就可以随意批量发送邮件了。下面是一个实测可用的实例。只要将第4步中的SMTP服务器地址、发送方邮箱和密码更改成开发者的实际信息,就能成功发送了。

Public Function MyVbaMail(emsubject As Variant, emfrom As Variant, emto As Variant, emcc As Variant, emhtmlbody As Variant, ByRef emattachment As Variant)Dim cm As Variant
Set cm = CreateObject("cdo.message") '创建CDO对象cm.from = emfrom '设置发信人的邮箱"
cm.To = emto '设置收信人的邮箱,多个邮箱之间用分号隔开
cm.cc = emcc '设置抄送人的邮箱
cm.Subject = emsubject '设定邮件的主题
'cm.TextBody =  '邮件正文,使用文本格式发送邮件
cm.bodyPaRT.Charset = "UTF-8" '定义国际通用字体
cm.htmlbody = emhtmlbody '使用html格式For i = 1 To UBound(emattachment)If emattachment(i) <> "" Thencm.AddAttachment emattachment(i) '添加附件End If
NextSTUl = "http://schemas.microsoft.com/cdo/configuration/" '微软服务器网址
With cm.Configuration.Fields.Item(STUl & "smtpserver") = "smtp.xxxx.com "         '发件人SMTP服务器地址.Item(STUl & "smtpserverport") = 25             '发件人SMTP服务器端口.Item(STUl & "sendusing") = 2                      '发送端口.Item(STUl & "smtpauthenticate") = 1      '需要提供用户名和密码,0是不提供           '.Item(STUl & "sendusername") = "xxxx@xxx.xxx"      '发送方邮箱名称.Item(STUl & "sendpassword") = "xxxxx"            '发送方邮箱密码.Update
End With
cm.Send '执行发送Set cm = Nothing '发送成功后释放对象End Function

让自己开发的VBA应用能够批量发送邮件(可带多个附件)相关推荐

  1. Python自动化小技巧14——自动批量发送邮件(带各种附件)

    案例背景 我的博客下面评论都是各种要数据的......一个一个发其实很浪费时间的,每次输入评论者的邮箱,然后打开数据所在的文件夹,上传,填写标题正文,发送....... 一模一样的流程,所以这种重复性 ...

  2. cdo收取邮件_【Excel VBA】- 使用CDO批量发送邮件(二)

    前一期为大家介绍了如何使用VBA结合Outlook批量发送邮件,需要批量为不同的人发送不同的附件等,可以很方便的批量发送.但缺点是需要事先配置Outlook邮箱.那有没有不需要配置Outlook即可批 ...

  3. 使用VBA实现xls批量转xlsx(遍历当前文件夹以及子文件夹)

    使用VBA实现xls批量转xlsx Published on Aug 9, 2019 in 编程 with 0 comment 我用Office 2019编辑过的一批xls文件,在Office 201 ...

  4. Excel 2010 VBA 入门 102 利用VBA批量发送邮件

    目录 示例 代码 CDO组件 CDO. Message. Configuration对象 前期绑定与后期绑定 New关键字创建对象 添加邮件的附件 示例 如图所示,该表为某公司员工工资单.现需要将该表 ...

  5. 基于PyQt5的快速开发模板系统-Excle数据批量导入及导出表格数据为Excle

    基于Python和PyQt5的快速开发模板系统-Excle数据批量导入显示及表格数据导出 基于PyQt5按钮控制实现excle数据批量导入及当前表格存在数据的批量导出,可在此基础上进行功能扩展. 1. ...

  6. 个人永久性免费-Excel催化剂功能第24波-批量发送邮件并指点不同附件不同变量...

    批量发送邮件功能,对高级OFFICE用户来说,第1时间会想到使用WORD的邮件合并功能.但对于需要发送附件来说,邮件合并功能就无能为力,同样还有的限制是用户电脑上没有安装OUTLOOK,同样也不能发送 ...

  7. 个人永久性免费-Excel催化剂功能第87波-将批量发送邮件做到极致化,需借力Outlook...

    在过往的功能中,已经实现过批量发送邮件的功能,但收到的反馈是部分企业邮箱不能用,原因是无解的,因为程序员能找到的公开的类库只能实现一些通用性的场景,太复杂的企业环境可能会失灵. 近期认真来学习Outl ...

  8. PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)...

    源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...

  9. Outlook 批量导出多个邮件的附件

    Outlook 批量导出多个邮件的附件 1.需求描述 2.实现步骤 3.升级:导出附件到以主题命名的文件夹 系统:Win10 Outlook:Microsoft Office 2016 1.需求描述 ...

最新文章

  1. lua用于ios开发
  2. Javascript 判断网页横竖屏
  3. MDT 2013 从入门到精通之SQL Computer Unattended Files
  4. Caffe上用SSD训练和测试自己的数据
  5. java怎么不安装到c盘的教程,帮您设置win10系统安装不了java的详细步骤
  6. 用ABAP实现SM36的设置后台JOB
  7. [Leetcode]160. Intersection of Two Linked Lists
  8. java filter注入_如何在Java Filter 中注入 Service
  9. 嗖嗖移动业务大厅代码_移动云应用性能监控,掌控云时代的多变应用
  10. 红帽企业存储管理之iscsi简单应用
  11. 浏览器安全防范,小程序类技术或许是更优的解决方式
  12. 基于uart的RS232和RS485总线
  13. MYSQL实现排序分组取第一条sql
  14. 张晓龙2018微信公开课
  15. 夜神模拟器无法连接网络的解决办法
  16. “你写公众号有啥用啊?还没我摊煎饼赚得多呢!”
  17. 机器学习中误差的定义,以及过拟合现象的介绍
  18. Linux安装rar压缩软件
  19. 大数据时代下:标签体系的应用
  20. 在windows中下载、安装和使用MongoDB

热门文章

  1. Vivado IP核使用 Ln(x)函数计算
  2. 【华为OD机试真题 JAVA】计算堆栈中的剩余数字
  3. 使用 WordPress Move插件网站搬家教程
  4. IT十大高薪行业,现在转行还来得及吗
  5. 用jquery实现淘宝放大镜以及图片切换
  6. Google软件工程:什么是软件工程
  7. 【机器学习】带你轻松理解什么是强化学习中的状态动作函数 ?
  8. Postman 之 测试报告输出(高级篇)
  9. layui 数据表格实现关键字搜索
  10. php单选按钮关闭文本框,使用php在html中显示单选按钮文本(Display radio button text in html with php)...