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:后的字符串一定要保持和图片附件的名称一致
VBA使用Outlook自动发送邮件的更多相关文章
- VBA控制outlook自动发送邮件(转)
使用Excel VBA实现Outlook自动发送邮件 | 在工作上我们都会遇到批量发送邮件的情况,面对重复而规律性的工作,可以使用Excel的VBA实现自动批量化发送邮件.大大减小工作时间,提升工作效 ...
- 【C#】新建服务自动发送邮件
---windows服务,---自动发送邮件 邮件发送code #region 发送邮件函数 public void SendMailUseZj() { System.Net.Mail.MailMes ...
- Jenkins配置自动发送邮件,成功!
Jenkins自动发送邮件配置: 打开"系统管理"--"系统设置" 在"Jenkins Location"设置系统管理员地址(重要:不能省略 ...
- python+selenium生成测试报告后自动发送邮件
标签(空格分隔): 自动化测试 运行自动化脚本后,会产生测试报告,而将测试报告自动发送给相关人员,能够让对方及时的了解测试情况,查看测试结果. 整个脚本包括三个部分: 生成测试报告 获取最新的测试报告 ...
- Jenkins进阶之自动发送邮件的Default Content设置模板
分享一个简洁实用的Jenkins项目邮件管理系统的"Default Content"设置模板 配置如下: <h1><center><font colo ...
- C#调用Outlook来发送邮件
原文:C#调用Outlook来发送邮件 写了一个简单的Windows Form程序,实现利用Outlook来发送电子邮件的功能.下面逐步讲解如何实现,再加上具体的代码. 打开VS2010, 新建一个W ...
- .net调用Outlook 批量发送邮件,可指定Outlook中的账号来发送邮件
.net调用Outlook 批量发送邮件,可指定Outlook中的账号来发送邮件 源码可以在我的资源列表中下载: MPOEMail http://download.csdn.net/my VS2012 ...
- VBS 自动发送邮件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- python☞自动发送邮件
一.SMTP 协议 SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式 二.smtplib ...
- jenkins配置自动发送邮件,抄送
1.安装插件.系统管理-安装插件:可选插件:搜索Email Extension 2.设置全局变量.系统管理-系统设置:a.Jenkins Location 设置发送方邮件--- b.Extended ...
随机推荐
- 基于MCP实现text2sql
目的:基于MCP实现text2sql能力 参考:https://blog.csdn.net/hacker_Lees/article/details/146426392 服务器 选用开源的MySQL M ...
- rabbitmq的消息的有顺序性
一.rabbitmq:拆分多个queue,每个queue一个consumer,就是多一些queue而已,确实是麻烦点:或者就一个queue但是对应一个consumer,然后这个consumer内部用内 ...
- ADTF: 助力自动驾驶系统开发的强大工具箱!
在过去十年中,自动驾驶和高级驾驶辅助系统(AD/ADAS)软件与硬件的快速发展对多传感器数据采集的设计需求提出了更高的要求.然而,目前仍缺乏能够高质量集成多传感器数据采集的解决方案. 康谋ADTF正是 ...
- Web前端入门第 37 问:多图细说 CSS grid 网格布局(二)子元素相关属性
学习本文之前,建议先学习上一篇了解父元素的相关属性. 前文对 grid 网格布局中父元素容器相关的 CSS 属性做了详细介绍,本篇将继续学习子元素相关的 CSS 属性. 网格布局的一大波样式属性,父元 ...
- MySQL 中 int(11) 的 11 表示什么?
MySQL 中 int(11) 的 11 表示什么? 在 MySQL 中,int(11) 中的 11 并不表示整数的取值范围,而是用于显示宽度(Display Width).它的含义和具体影响如下: ...
- 被LangChain4j坑惨了!
最近在深度体验和使用 Spring AI 和 LangChain4j,从开始的满怀期待五五开,但最后极具痛苦的使用 LangChain4j,让我真正体验到了正规军和草台班子的区别. Spring AI ...
- 三维装箱问题(3D Bin Packing Problem, 3D-BPP)
提出问题 集装箱海运家具, 沙发, 茶几, 椅子等等, 有多少套家具,以及每个家具的长宽高都会告诉你. 把所有的家具都装进集装箱里, 要求通过算法算出一共需要多少集装箱. 1.要考虑怎样装, 需要的集 ...
- 6.4K star!企业级流程引擎黑马,低代码开发竟能如此高效!
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 AgileBPM 是一个基于Activiti7深度优化的企业级流程引擎开发平台,支持低代码. ...
- 【代码】JS|前端密码,浪漫至死不渝,祝我生日快乐
今天是特别的日子,我想把这篇存稿发出来. 一次缺席,次次缺席,便不再期待重逢. 也是时候,解开最后一个设计过的谜题. 学加密的同时,我恰好写前端比较多,也有朋友找我测试他们前端页面上的加密方案的安全性 ...
- CentOS 7.6安装nginx
1.安装EPEL仓库 [root@ecs-lanxinmeichen nginx]# sudo yum install epel-releaseLoaded plugins: fastestmirro ...