当前位置: 首页 > 知识库问答 >
问题:

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

海宁
2024-12-12

测试了下面的代码,必须本机安装的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发送邮件?

共有1个答案

司空昊阳
2024-12-12

启用 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
 类似资料:
  • 问题内容: 我只是想知道是否可以在不将Outlook安装在服务器上且不使用COM Interop的情况下向人们发送会议请求(我不惜一切代价避免在服务器上使用)。 我们在Windows 2003域中拥有Exchange 2003,并且所有用户都是域用户。我想我可以发送’round iCal / vCal之类的东西,但是我想知道是否存在通过Exchange在不使用Outlook的情况下发送会议请求的适

  • 我想用Java从我的公司Outlook帐户发送邮件。但它说邮箱无法访问。我试过各种解决方案,比如更改主机名,但还是不行。错误保持不变。请对此提出任何解决方案。下面是我面临的错误片段。注意:我使用javax mail来实现这个目的。

  • 我希望我的程序能够从我的公司outlook帐户发送电子邮件。我看了很多JMA的例子,似乎不是我想要的。 在哪里可以找到通过Outlook发送邮件的简单示例? 我是否应该将邮件系统移至独立的服务-应用程序?如果是,为什么?

  • 问题内容: 我正在使用。 使用发送电子邮件(通过)的最佳方法是什么? 问题答案: 有关使用Outlook的解决方案,请参见下面的TheoretiCAL答案。 否则,请使用python随附的smtplib。请注意,这将要求您的电子邮件帐户允许smtp,默认情况下不一定启用此功能。 编辑: 此示例使用保留域,如RFC2606中所述 为了使它真正与gmail配合使用,Doe先生需要进入gmail中的选项

  • 当使用Azure Logic App Office 365 Outlook连接器-“发送电子邮件”时,是否有方法确定电子邮件是否已实际送达收件人,以便根据失败采取特定措施? 我在连接器中使用了无效的电子邮件ID,但发送电子邮件的操作显示为成功,即使电子邮件未送达。为了确认这是一个无效的电子邮件ID,我从Outlook向该无效电子邮件ID发送了电子邮件,并收到了一封未送达的电子邮件。 在“发送电子邮

  • 问题内容: 我正在尝试使用JavaMail以html格式发送电子邮件,但它似乎始终只在Outlook中显示为文本电子邮件。 这是我的代码: 有什么想法为什么电子邮件的html版本不会在Outlook中显示? 问题答案: 经过大量调查,我已经取得了一些重大进展。 首先,我建议不要使用JavaMail,而应使用Jakarta Commons Email 库。这确实大大简化了问题! 现在的代码是: 讲简