【发布时间】:2020-06-18 15:16:52
【问题描述】:
我正在尝试通过 Outlook(在 Excel 上启动)发送带有附件的电子邮件。代码运行没有错误,但 17 封电子邮件中只有大约 6 封发送出去,余额卡在发件箱中,当我打开 Outlook 并自己同步文件夹时发送出去。
我尝试使用:DoEvents 和 Application.Wait (Now + TimeValue("0:00:03")) 无济于事。
For counter = 2 To 18
branchCode = Workbooks("Upload.xlsm").Worksheets("Branch List").Range("C" & counter).Value
BranchName = Workbooks("Upload.xlsm").Worksheets("Branch List").Range("A" & counter).Value
branchEmail = Workbooks("Upload.xlsm").Worksheets("Branch List").Range("D" & counter).Value
sheetPath = Workbooks("Upload.xlsm").Worksheets("Branch List").Range("J2").Value
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = branchEmail
.BCC = ""
.Subject = "Rate Sheet " & BranchName & " - " & Now()
.Body = "Hi, Please find attached below your rate sheet, your uploads are ready as well."
.Attachments.Add (sheetPath & BranchName & ".pdf")
.Send
End With
On Error GoTo 0
Application.Wait (Now + TimeValue("0:00:03"))
Set OutMail = Nothing
Set OutApp = Nothing
Next counter
【问题讨论】:
-
你的代码对我有用,没有卡住的电子邮件。可能与您的观点有关。
-
可能与您的 Exchange 服务器有关。
-
你为什么有
On Error Resume Next? -
与服务器无关,上传单个工作表的代码就像在两个网络上的多台计算机上的魅力一样。批量发送会导致一个问题,我怀疑是由于 Outlook 已关闭。通过这段代码的设计,我尝试省略退出行,但无济于事。
-
On Error Resume Next在代码上,以避免造成随机挂起。此代码最初是为一次从一张纸上写一封电子邮件而设计的,当快速发送电子邮件时,有时会出现 Outlook 实例重叠的问题,导致它突然停止。禁用错误处理后,它工作正常。当代码被修改为遍历所有工作表时,我让它思考它是否没有损坏..