要给不同的收件人发送不同的邮件,并且添加不同的附件,不用下载配置Outlook客户端,在Excel中利用VBA,配合QQ邮箱或者163邮箱就能做到。
1.准备数据源
按照上图中的格式,准备好每封邮件的主题,正文,收件人邮箱,附件。附件字段填写附件在电脑上的路径。
2.开启QQ邮箱smtp服务登录QQ邮箱,依次点击【设置】-【账户】,滚动到到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”,点击【开启】,然后按照提示操作,获得一串授权码
3.发送邮件
将QQ号和授权码粘贴到Excel表格上的对应单元格中,点击【开始批量发送邮件】按钮,就能自动批量发送邮件了。
163邮箱的原理相同,在表格中填入163邮箱的账户名称和smtp服务授权码,就能使用163邮箱,批量发送邮件。
4.VBA代码有需要的朋友,将下面的代码插入到ExcelVBA标准模块中,并将工作表上的按钮指定到sendmail过程,点击按钮就能发送了。也可以根据自己的特定需求,对代码稍作修改后使用。示例文件从如下位置获取:链接: https:///s/1YGFEOc-DbOHkQ73bdu4inQ 提取码: zx42
欢迎关注评论转发,如果希望了解办公场景中一些特定问题的解决方案分享,可以在评论区留言哦。
Sub sendMail()
Dim Mailmessage As Object, serverURL As String
Dim adata, Account As String, PassWord As String
Dim col As String
Account = Cells(4, 6)
PassWord = Cells(5, 6)
adata = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp)).Resize(, 4).Value
'以下部分设置邮件服务器
Set Mailmessage = CreateObject("CDO.Message")
serverURL = "http://schemas.microsoft.com/cdo/configuration/"
With Mailmessage.Configuration.Fields
.Item(serverURL & "smtpserver") = "smtp.qq.com" '服务器配置根据具体使用的邮箱设置
.Item(serverURL & "smtpserverport") = 25
.Item(serverURL & "sendusing") = 2
.Item(serverURL & "smtpauthenticate") = 1
.Item(serverURL & "sendusername") = Account
.Item(serverURL & "sendpassword") = PassWord
.Item(serverURL & "smtpconnectiontimeout") = 60
.Update
End With
On Error GoTo errhandle
'以下部分编辑邮件内容并发送
For i = 1 To UBound(adata)
With Mailmessage
.BodyPart.Charset = "utf-8" '如果有中文内容,需指定编码为utf-8
.Attachments.DeleteAll
.From = Account & "@qq.com" '163邮箱改为@163.com
.Subject = adata(i, 1)
.TextBody = adata(i, 2)
.To = adata(i, 3)
.AddAttachment adata(i, 4)
.Send
End With
nextmail:
Next
On Error GoTo 0
Set Mailmessage = Nothing
If col = "" Then
MsgBox "批量发送完成"
Else
MsgBox "批量发送完成,以下邮件发送失败:" & vbNewLine & col
End If
Exit Sub
errhandle:
col = col & vbNewLine & "TO:" & adata(i, 3)
GoTo nextmail
End Sub