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

当我们开发了一个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) <> "" Then
    cm.AddAttachment emattachment(i) '添加附件
    End If
Next

STUl = "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

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZevieZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值