如何用vba操作Outlook发邮件?

Outlook是Office软件中的其中一个组件,可以用于关联邮箱进行收发邮件。

要用用vba操作Outlook,首先要了解Outlook的vba对象模型。

Outlook的vba对象模型中Application对象为根对象,代表整个Outlook应用程序。

MailItem对象代表一封邮件,也是最常用的Outlook对象。

如果要用vba新建一封邮件,可以使用Application对象的CreateItem方法。

通过MailItem对象,可以设置一系列与邮件相关的内容。

比如可以通过To属性设置收件人的邮箱,其中如果有多个收件人可以使用分号分隔。

通过Subject属性设置要发送的邮件的主题,通过BodyFormat属性和Body属性设置要发送的邮件的内容格式以及具体的内容,通过CC属性和BCC属性设置要抄送和要密件抄送的邮箱,通过Attachments属性返回要发送邮件的所有附件集合对象,通过Attachments集合对象的Add方法可以添加指定的附件,最后通过Send方法发送邮件。

有了以上的知识,就可以使用如下的vba代码创建一个新的邮件,并且发送出去:

Sub QQ1722187970()
    Const olFormatPlain = 1
    Const olFormatHTML = 2
    Const olFormatRichText = 3
    Const olFormatUnspecified = 0
    Const olMailItem = 0
    Dim sPath As String
    sPath = Excel.ThisWorkbook.Path & "\"
    Dim objOutlookApp
    Set objOutlookApp = CreateObject("Outlook.Application")
    '邮件附件对象
    Dim objAttachment
    With objOutlookApp
        '一封邮件对象
        Dim objMailItem
        Set objMailItem = .CreateItem(olMailItem)
        With objMailItem
            '收件人,多个收件人用分号间隔
            .To = "1234@qq.com"
            '抄送人
            .CC = "1722187970@qq.com"
            '密件抄送人
            .BCC = "1722187970@qq.com"
            '邮件主题
            .Subject = "Test"
            '邮件内容格式
            .BodyFormat = olFormatPlain
            '邮件的内容
            .Body = "sdf"
            '要添加的附件
            .Attachments.Add sPath & "test.xlsx"
            '显示对话框
            .Display
            '开始发送邮件
            .Send
        End With
    End With
End Sub

以上代码是后期引用Outlook.Application,下面的代码是前期引用Outlook.Application

Sub QQ1722187970()
    Dim sPath As String
    sPath = Excel.ThisWorkbook.Path & "\"
    Dim objOutlookApp As Outlook.Application
    Set objOutlookApp = New Outlook.Application
    '邮件附件对象
    Dim objAttachment As Outlook.Attachment
    With objOutlookApp
        '一封邮件对象
        Dim objMailItem As Outlook.MailItem
        Set objMailItem = .CreateItem(olMailItem)
        With objMailItem
            '收件人,多个收件人用分号间隔
            .To = "1234@qq.com"
            '抄送人
            .CC = "1722187970@qq.com"
            '密件抄送人
            .BCC = "1722187970@qq.com"
            '邮件主题
            .Subject = "Test"
            '邮件内容格式
            .BodyFormat = olFormatRichText
            '邮件的内容
            .Body = "sdf"
            '要添加的附件
            .Attachments.Add sPath & "Test.xlsx"
            '显示对话框
            .Display
            '开始发送邮件
            .Send
        End With
    End With
End Sub
       

仅有1条评论 发表评论

  1. 匿名 /

    有一个方法是save,不是send这个作用是什么?

发表评论