玖叶教程网

前端编程开发入门

Excel VBA:如何使用VBA批量发送邮件

在日常工作中,经常需要发送大量相似的邮件,比如通知、报告等等。手动发送不仅耗时,而且容易出错。VBA提供了一种自动化解决方案,让批量发送邮件变得简单高效。

一、开启邮箱SMTP服务,获取授权码;

以163邮箱为例,登录邮箱--设置--POP3/SMTP/IMAP--开启服务,根据提示获取授权码;

注意:授权码只显示一次,点击确认前需要复制记录保存下来。

二、Excel制作收件人列表,如收件人名称、邮箱、邮件的主题、正文、附件的路径等。

三、VBA代码,打开VBA编辑器,创建一个新的模块,录入代码并运行。

Sub SendEmail()
    Dim CDO As Object, ir As Long, i As Long
    Dim CDO_toname As String, CDO_to As String, CDO_subject As String
    Dim CDO_textbody As String, CDO_attachment As String

    Const Email_From = "******@163.com"
    Const Password = "*********"
    Const schema = "http://schemas.microsoft.com/cdo/configuration/"

    ir = Sheet1.UsedRange.Rows.Count

    For i = 2 To ir
        CDO_toname = Sheet1.Range("B" & i)
        CDO_to = Sheet1.Range("C" & i)
        CDO_subject = Sheet1.Range("D" & i)
        CDO_textbody = Sheet1.Range("E" & i)
        CDO_attachment = Sheet1.Range("F" & i)

        Set CDO = CreateObject("CDO.Message")

        CDO.From = Email_From
        CDO.To = CDO_to
        CDO.Subject = CDO_subject
        CDO.TextBody = CDO_textbody
        CDO.AddAttachment Trim(CDO_attachment)

        With CDO.Configuration.Fields
            .Item(schema & "sendusing") = 2
            .Item(schema & "smtpserver") = "smtp.163.com"
            .Item(schema & "smtpauthenticate") = 1
            .Item(schema & "sendusername") = Email_From
            .Item(schema & "sendpassword") = Password
            .Item(schema & "smtpserverport") = 465
            .Item(schema & "smtpusessl") = True
            .Item(schema & "smtpconnectiontimeout") = 60
            .Update
        End With

        CDO.Send
        Set CDO = Nothing
    Next i

End Sub

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言