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自动发送邮件,代码及注释如下:Sub send_mail()Dim ObjOL As ObjectDim itmNewMail As Outlook.MailItemDim mailaddress As String'引用Microsoft Outlook 对象Set ObjOL = CreateObject("Outlook.Application")Set itmNewMail = ObjOL.CreateItem(olMailItem)'******输入
VBA利用企业邮箱自动发送邮件1、应用场景2、VBA生成PDF附件3、企业邮箱设置发送账户4、VBA利用企业邮箱发送邮件利用Windows任务计划设置定时执行小结 1、应用场景 所在企业提出能不能把SAP Cloud每日发货的信息定时发送到销售经理的公司邮箱和企业微信。 2、VBA生成PDF附件 按照上面的数据格式转化为PDF文件 下面展示一些 内联代码片。 Sheets(“邮件发送”).ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 之前在Excel中使用VBA实现了自动发邮件的功能,也是在Excel中引用了Outlook 但是对于某些场景,仅仅使用Excel这种方式还不行。如自动对每一封新邮件一些处理 Office的Outlook本身也是支持VBA的二次开发,所以一起来看看 Part 2:环境介绍 和Excel中打开开发环境类似。文件-选项-自定义功能区
第一次使用VBA自动发送邮件,酷!示例代码:Sub 邮件发送() Dim cm As New CDO.Message 'Set cm = CreateObject("CDO.Message") '创建对象 '引用路径:C:\Windows\system32\cdosys.dll cm.From = "1234567@qq.com" '设置发信人的邮箱" cm.To = "649725266@qq....
Dim objEmail As Object Set objEmail = CreateObject("CDO.Message") objEmail.From = "elcasyc530@163.com" objEmail.Subject = "调查资料" 'objEmail.To = InputBox("请修改接收数据的邮箱名", "getch", "***@163.com") objEmail.To = "***@163.com" Sub DownloadAttachments() Dim objOL As Outlook.Application Dim objNS As Outlook.NameSpace Dim objFolder As Outlook.MAPIFolder Dim objItem As Object Dim objAttachment As Outlook.Attachment Dim strFolderPath As String Dim strFileName As String ' Set the folder path where you want to save the attachments strFolderPath = "C:\Attachments\" ' Create the Outlook application object Set objOL = CreateObject("Outlook.Application") ' Get the MAPI namespace Set objNS = objOL.GetNamespace("MAPI") ' Get the Inbox folder Set objFolder = objNS.GetDefaultFolder(olFolderInbox) ' Loop through each item in the Inbox folder For Each objItem In objFolder.Items ' Check if the item is a mail item If TypeOf objItem Is MailItem Then ' Loop through each attachment in the mail item For Each objAttachment In objItem.Attachments ' Save the attachment to the specified folder strFileName = strFolderPath & objAttachment.FileName objAttachment.SaveAsFile strFileName Next objAttachment End If Next objItem ' Clean up Set objAttachment = Nothing Set objItem = Nothing Set objFolder = Nothing Set objNS = Nothing Set objOL = Nothing MsgBox "Attachments downloaded successfully!", vbInformation End Sub 请注意,此代码仅适用于 Outlook 客户端,而不适用于 Outlook Web App。