使用VBA+HCL Notes发送邮件触发Error 3000问题求助
HCL Notes VBA邮件发送Error 3000排查方案(插入图片导致)
检查图片插入对象的释放情况
插入图片时创建的NotesEmbeddedObject如果没及时释放,会占用Notes会话资源,导致发送时会话状态异常。插入后要立即释放对象:Dim objEmbed As NotesEmbeddedObject Set objEmbed = docMail.CreateRichTextItem("Body").EmbedObject(EMBED_ATTACHMENT, "", "C:\test.jpg", "Image1") ' 插入完成后释放对象 Set objEmbed = Nothing验证图片路径与权限
必须用绝对路径指定图片,且VBA运行进程要有该文件的读取权限——别把图片放C:\Windows这类受系统保护的目录,避免权限不足导致嵌入失败。规范富文本项的创建逻辑
别重复创建Body富文本项,多次调用CreateRichTextItem("Body")会引发富文本对象冲突。应该先获取已有Body项,不存在再创建,复用同一个对象插入内容:Dim rtBody As NotesRichTextItem ' 先尝试获取已有的Body项 Set rtBody = docMail.GetFirstItem("Body") If rtBody Is Nothing Then Set rtBody = docMail.CreateRichTextItem("Body") End If ' 用同一个rtBody对象插入文本和图片 Call rtBody.AppendText("邮件正文内容") Set objEmbed = rtBody.EmbedObject(EMBED_ATTACHMENT, "", "C:\test.jpg", "Image1") Set objEmbed = Nothing确认Notes会话与数据库连接状态
插入图片过程中,别误操作关闭数据库连接或重置Notes会话对象。从创建会话到发送邮件的全程,要保持NSession和NDB对象的引用,别提前Set ... = Nothing。捕获错误详情定位问题
在SEND语句前加错误处理,输出具体错误描述,能更快定位根因:On Error Resume Next Call docMail.Send(0, vaRecipient) If Err.Number = 3000 Then MsgBox "Error 3000详情:" & Err.Description & " | 邮件文档ID:" & docMail.NoteID End If On Error GoTo 0
内容的提问来源于stack exchange,提问作者Eduardo Muslimovich
相关产品推荐
相关产品推荐

