vba自动发送邮件带附件带正文 (vba代码实现一键批量打印功能)

vba批量发送邮件和抄送邮件,vba代码批量提取图片中的表格

vba批量发送邮件和抄送邮件,vba代码批量提取图片中的表格

vba批量发送邮件和抄送邮件,vba代码批量提取图片中的表格

实现功能:批量群发邮箱

感觉这个比前面分享的那个方法发送邮箱要快点。

需要Excel模板订制请私聊

下面是代码分享

前期准备设置

vba批量发送邮件和抄送邮件,vba代码批量提取图片中的表格

vba批量发送邮件和抄送邮件,vba代码批量提取图片中的表格

前面都设置好了,就把下面代码写入进去

Sub cdosendmail()

Dim cdomail As Object

Dim strpath As String

Dim adata As Variant

Dim i As Long

Dim strurl As String

Dim strfrommail As String

Dim strpassword As String

strfrommail = Range("b2").Value

strfromname = Range("b3").Value

If strfrommail = "" Or strfromname = "" Then

MsgBox "未输入邮箱地址或名称"

Exit Sub

End If

strpassword = Range("b4").Value

If strpassword = "" Then

MsgBox "未输入smtp服务密码"

Exit Sub

End If

With Application

.ScreenUpdating = False

.DisplayAlerts = False

End With

Sheets("数据").Select

adata = Range("a1:c" & Cells(Rows.Count, 1).End(xlUp).Row)

'------数据装入数组aData

strpath = ThisWorkbook.Path & "\暑假快乐.jpg"

'------附件存放的路径+名称

'On Error Resume Next

For i = 2 To UBound(adata)

Set cdomail = CreateObject("cdo.message")

'------创建CDO对象

cdomail.from = strfrommail

'------发信人的邮箱

cdomail.to = adata(i, 1)

'------收信人的邮箱

cdomail.Subject = adata(i, 2)

'------邮件的主题

cdomail.htmlbody = adata(i, 3)

'------邮件的内容(Html格式)

cdomail.textbody = adata(i, 3)

'------邮件的内容(文本格式)

cdomail.addattachment strpath

'------邮件的附件

strurl = "http://schemas.microsoft.com/cdo/configuration/"

'------微软服务器网址

With cdomail.configuration.Fields

.Item(strurl & "smtpserver") = "smtp.qq.com"

'------SMTP服务器地址

.Item(sturl & "smtpserverport") = 25

'------SMTP服务器端口

.Item(strurl & "sendusing") = 2

'------发送端口

.Item(strurl & "smtpauthenticate") = 1

'------远程服务器验证

.Item(strurl & "sendusername") = strfromname

'-------发送方邮箱名称

.Item(strurl & "sendpassword") = strpassword

'-------发送方smtp密码

.Item(strurl & "smtpconnectiontimeout") = 60

'-------设置连接超时(秒)

.Update

End With

cdomail.send

'-------发送

If Err.Number = 0 Then

adata(i, 3) = "发送成功"

Else

adata(i, 3) = "发送失败"

End If

Next

Range("d1").Resize(UBound(adata), 1) = Application.Index(adata, , 3)

Range("d1") = "发送状态"

Set cdomail = Nothing

With Application

.ScreenUpdating = True

.DisplayAlerts = True

End With

MsgBox "您好,发送任务完成"

End Sub

'如果要使用163邮箱发送邮件。修改发件人的邮箱地址、名称和对应的smtp服务密码

'将 .Item(strURL & "smtpserver")="smtp.qq.com" 改为 .Item(strURL & "smtpserver")="smtp.163.com"

'如果将一封邮件发送多人,不同收件人之间使用半角分号间隔即可。

'例:"42@qq.com;43@qq.com"