【问题标题】:Sending Email with attachment by MS-Outlook in VBA, Excel when Outlook is closed关闭 Outlook 时在 VBA、Excel 中通过 MS-Outlook 发送带附件的电子邮件
【发布时间】:2018-05-24 16:14:49
【问题描述】:

当我发送没有附件的邮件时,确实有效。

但是当我使用.Attachments.Add ActiveWorkbook.FullName 参数时,它不会发送并一直等待打开 Outlook。

我想在 Outlook 关闭时发送邮件。

我正在使用以下代码:

Sub SendMail()
    Dim OutlookApp As Outlook.Application
    Dim OutlookMail As Outlook.MailItem

    Set OutlookApp = New Outlook.Application
    Set OutlookMail = OutlookApp.CreateItem(olMailItem)

    With OutlookMail
        .To = "address@domain.com"
        .CC = ""
        .BCC = ""
        .Subject = "M"
        .BodyFormat = olFormatHTML
        .HTMLBody = "Hi, <p> I'm sending this message from Excel using VBA.</p>Please find <strong> M</strong> in life."
        .Attachments.Add ActiveWorkbook.FullName
        .DeferredDeliveryTime = DateAdd("n", 1, Now)
        .Importance = olImportanceHigh
        .ReadReceiptRequested = True
        .Send
    End With
    Set OutlookMail = Nothing
    Set OutlookApp = Nothing
End Sub

关于.DeferredDeliveryTime = DateAdd("n", 1, Now):我希望电子邮件在运行宏后 1 分钟发送。

问候。

这个问题独特的原因:

  1. StackowerflowQuestion:我上面的代码解决了这个问题,剩下的问题是我在这里关注的发送附件。适当的答案是我强调的是 Outlook 已关闭。

更新

另一个症状是当我运行上面的代码时,try 系统中会显示一个临时图标,并弹出一条消息:"another program is using outlook. to disconnect program and exit outlook..."

如果重要,也请考虑这一点。


请注意问题在于发送附件

通过以上代码,解决了关闭outlook时发送邮件的问题。 (在类似问题中提到)

所以在这种情况下,剩下的问题是发送附件(Outlook 已关闭)。

【问题讨论】:

  • 关于,我正在搜索并阅读所有类似的问题。我的问题没有重复,因为:问题是在 Outlook 关闭时发送Attachment,而免费附件的电子邮件已真正发送。这里的重点是发送附件问题。非常感谢您的关注。
  • 关于这一点,我加粗,因为注意到类似问题的公认答案。我之前审查过这些类似问题。正如你提到的,我在Attachment 行旁边用ActiveWorkbook.FullName 指定了文件路径。
  • 只是和你确认一下,你发邮件的时候,excel打开了吗?
  • 是的。我现在试试你的答案。因此,当我尝试在打开 Outlook 时发送当前打开的工作簿时,它确实有效。但是当 Outlook 关闭并且我尝试发送附件时,它在打开 Outlook 时一直处于等待状态。
  • 在添加附件前使用.Display

标签: vba excel email outlook


【解决方案1】:

抱歉,我刚才误解了你的问题。参考here,需要添加如下代码。

Dim OutApp As Outlook.Application 
Dim OutMail As Outlook.MailItem

On Error Resume Next 
Set OutApp = GetObject(, "Outlook.Application") 
If OutApp Is Nothing Then 
    Set OutApp = CreateObject("Outlook.Application") 
End If 
On Error Goto 0 

Set OutMail = OutApp.CreateItem(olMailItem) 
With OutMail 
    .To = "address@domain.com" ' continue from here

【讨论】:

  • 不幸的是,问题仍然存在。我尝试了您的建议,但是当 Outlook 关闭时,发送附件处于挂起状态。
  • 更新了我的答案
  • UPDATE... 问候您,您的回答是正确的,并且当 Outlook 针对该案例关闭时有效发送邮件附件。不幸的是,问题仍然存在。请再次查看原始问题,所涉及的代码与上面的答案非常相似,并且这两个在 Outlook 关闭用于发送邮件无附件的情况下确实有效,但是请告诉我如何解决关闭 Outlook 时发送带有附件的邮件的问题?我已经通过引用可能与该问题相关的症状更新了我的问题。
猜你喜欢
  • 2021-05-11
  • 2016-01-18
  • 2020-05-30
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 2013-08-01
相关资源
最近更新 更多