可否在outlook关闭的状态下,vba调用outlook发送邮件?

测试了下面的代码,必须本机安装的outlook,配置好qq邮箱,还需要打开outlook,vba才能调用outlook发送邮件

Sub SendMail()
    Set myOlApp = CreateObject("Outlook.Application")'//后期绑定
    Set objMail = myOlApp.CreateItem(olMailItem)'新建一封邮件
    With objMail
        .To = "xxxx@qq.com"'//收件人
        .Subject = "邮件主题" '//就是邮件标题
        .Body = "邮件正文内容" '//正文具体内容
        .cc = "yyyy@163.com" '//邮件抄送人
        .Attachments.Add "f:\派送单.xlsx" '//添加附件
        .Display '//刷新显示效果的作用
        .Send'//发送
    End With
End Sub

我测试了,如果本机的outlook没有打开,上述代码无法使用。
请问,有无办法,可否在outlook关闭的状态下,vba调用outlook发送邮件?

阅读 594
1 个回答

启用 CDO 库:

系统版本可能路径不一样,前提要先启用。
CDO 库通常默认安装在 Windows 上,但在某些系统上可能需要手动启用。你可以通过以下步骤启用它:

  1. 打开 VBA 编辑器(按 Alt + F11)。
  2. 在菜单栏中选择 工具 -> 引用
  3. 在引用列表中找到并勾选 Microsoft CDO for Windows 2000 LibraryMicrosoft CDO for Exchange 2000 Library

配置 SMTP 服务器:

一些常见邮件服务的 SMTP 配置信息:

QQ 邮箱:

  • 服务器地址:smtp.qq.com
  • 端口号:25465(SSL)
  • 需要开启 SMTP 服务并获取授权码(在 QQ 邮箱设置中开启)。

Gmail:

  • 服务器地址:smtp.gmail.com
  • 端口号:587(TLS)或 465(SSL)
  • 需要开启“允许不太安全的应用”访问(在 Gmail 设置中开启)。

使用CDO库(Collaboration Data Objects)
我写个例子给你参考一下

Sub SendMailUsingCDO()
    Dim objMessage As Object
    Set objMessage = CreateObject("CDO.Message")
    With objMessage
        .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.qq.com"
        .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
        .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "你的QQ邮箱"
        .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "你的QQ邮箱授权码"
        .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
        .Configuration.Fields.Update
        .To = "xxxx@qq.com"
        .CC = "yyyy@163.com"
        .From = "你的QQ邮箱"
        .Subject = "邮件主题"
        .TextBody = "邮件正文内容"
        .AddAttachment "C:\Users\Administrator\Desktop\派送单.xlsx"
        .Send
    End With
    Set objMessage = Nothing
End Sub
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏