VBA使用Outlook自动发送邮件
↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓
基础版本–能自动发送就是成功
利用VBA使用Outlook自动发送邮件,代码及注释如下:
Sub send_mail()
Dim ObjOL As Object
Dim itmNewMail As Outlook.MailItem
Dim mailaddress As String
'引用Microsoft Outlook 对象
Set ObjOL = CreateObject("Outlook.Application")
Set itmNewMail = ObjOL.CreateItem(olMailItem)
'******输入参数,多个收件人,抄送人用分号间隔
With itmNewMail
.Subject = "测试邮件" '主旨
.body = "这是一封测试邮件" '正文本文
.To = "12345@qq.com" '收件者
' .CC=CC '抄送邮件地址
' .BCC = BCC mail.Bcc='12345678@qq.com'
.Attachments.Add "C:\测试.xlsx" '插入附件
.Importance = 2 '设置重要性为高
.Display '启动Outlook发送窗口
.send '发送
End With
Set ObjOL = Nothing
Set itmNewMail = Nothing
End Sub
如果运行过程中报错
“用户定义类型未定义(User-defined type not defined)”,则需要添加对应的插件:
点击Tools-> References,选中下面两个插件:
Microsoft Excel [版本号] Object Library
Microsoft Outlook [版本号] Object Library
添加多个附件
如果需要添加多个附件,则直接使用多次的 .Attachments.Add即可
Sub send_mail()
Dim ObjOL As Object
Dim itmNewMail As Outlook.MailItem
Dim mailaddress As String
'引用Microsoft Outlook 对象
Set ObjOL = CreateObject("Outlook.Application")
Set itmNewMail = ObjOL.CreateItem(olMailItem)
'******输入参数,多个收件人,抄送人用分号间隔
With itmNewMail
.Subject = "测试邮件" '主旨
.body = "这是一封测试邮件" '正文本文
.To = "12345@qq.com" '收件者
.Attachments.Add "C:\测试.xlsx" '插入附件1
.Attachments.Add "C:\测文件.docx" '插入附件2
.Display '启动Outlook发送窗口
.send '发送
End With
Set ObjOL = Nothing
Set itmNewMail = Nothing
End Sub
选择发送邮箱/账号
自动发送默认使用outlook中的默认邮箱,但是我们的outlook邮箱可能除了我们自己的邮箱账号外还有其他的账号,例如公共邮箱。那我们如何使用其他的账号自动发送邮件呢?只要设定一下SendUsingAccount属性即可:
Sub send_mail()
Dim ObjOL As Object
Dim itmNewMail As Outlook.MailItem
Dim mailaddress As String
'引用Microsoft Outlook 对象
Set ObjOL = CreateObject("Outlook.Application")
Set itmNewMail = ObjOL.CreateItem(olMailItem)
'******输入参数,多个收件人,抄送人用分号间隔
With itmNewMail
.Subject = "测试邮件" '主旨
.body = "这是一封测试邮件" '正文本文
.To = "12345@qq.com" '收件者
.SendUsingAccount = ObjOL.Session.Accounts.Item(2) '选择发送邮箱
.Importance = 2 '设置重要性为高
.Display '启动Outlook发送窗口
.send '发送
End With
Set ObjOL = Nothing
Set itmNewMail = Nothing
End Sub
语句 .SendUsingAccount = ObjOL.Session.Accounts.Item(2)
中的Item(2)
中的数字是根据实际邮箱账号的数量和顺序来的,确定的方法可以在debug时找到itmNewMail对象的.SendUsingAccount 属性确认,或者直接从1开始慢慢试吧!
修改正文格式
如果需要修改正文中的字体,则需要使用HTML格式调整,代码示例如下:
Sub send_mail_html()
Dim ObjOL As Object
Dim itmNewMail As Outlook.MailItem
Dim mailaddress As String
'引用Microsoft Outlook 对象
Set ObjOL = CreateObject("Outlook.Application")
Set itmNewMail = ObjOL.CreateItem(olMailItem)
'******输入参数,多个收件人,抄送人用分号间隔
With itmNewMail
.Subject = "测试邮件" '主旨
'正文本文
.HTMLBody = "<H2>致尊敬的收件人</H2><BR>" & _
"<FONT SIZE=4>请注意<BR>" & _
"这是一封<Font Face=Times Roman Size=4.5 Color=blue>测试邮件</font>并且<Font Face=Times Roman Size=4.5 Color=red>没有附件</font>。<BR>"
.To = "12345@qq.com" '收件者
.Display '启动Outlook发送窗口
.Send
End With
Set ObjOL = Nothing
Set itmNewMail = Nothing
End Sub
其中正文中的HTML标签含义如下:
<H2> </H2>标签: 在Html语句中<h1> - <h6> 标签可定义标题。<h1> 定义最大的标题。<h6> 定义最小的标题。
<br> 标签:插入一个换行符
<font>标签: 规定文本的字体、字体尺寸、字体颜色。例如示例中的<Font Face=Times Roman Size=4.5 Color=blue>
其他格式,例如加粗,斜体等都可以使用特定的HTML标签实现,具体百度即可。
插入图片
如果需要在正文中插入图片的话则需要先插入图片附件,然后利用HTML将图片插入到正文中
Sub send_mail_html()
Dim ObjOL As Object
Dim itmNewMail As Outlook.MailItem
Dim mailaddress As String
'引用Microsoft Outlook 对象
Set ObjOL = CreateObject("Outlook.Application")
Set itmNewMail = ObjOL.CreateItem(olMailItem)
'******输入参数
With itmNewMail
.Subject = "测试邮件" '主旨
.Attachments.Add "C:\Users\test.jpg" '添加图片附件
'正文本文,插入图片
.HTMLBody = "<H2>致尊敬的收件人</H2><BR>" & _
"<FONT SIZE=4>请看如下图片<BR>" & _
"<img src='cid:test.jpg' height=432 width=864>"
.To = "12345@qq.com" '收件者
.Display '启动Outlook发送窗口
.Send
End With
Set ObjOL = Nothing
Set itmNewMail = Nothing
End Sub
代码中的主要是<img src='cid:test.jpg' height=432 width=864>
这一句,用于显示图片和调整大小,其中cid:
后的字符串一定要保持和图片附件的名称一致
本文来自博客园,作者:Smilecoc,转载请注明原文链接:https://www.cnblogs.com/smilecoc/p/18724352
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码