我想搜索一封电子邮件,用代码strHTML
中指定的内容回复,同时保留前一封电子邮件的踪迹latestEmail.HTMLBody
。
我不能让这两件事同时发生。
如果我包含了指定的回复内容,那么我就失去了之前的对话;否则,我可以保留先前的对话,但不能纳入指定的回复内容。
如果我不包括命令.HTMLBody = strHTML & latestEmail.HTMLBody
,那么回复电子邮件将包括以前的电子邮件对话,但我不会有我想在电子邮件中包括的回复内容。
如果我使用上面的命令我得到
运行时错误“287”应用程序定义或对象定义错误
如果我使用.HTMLBody = strHTML
代码,我将丢失电子邮件轨道。
'set the subject to serach for
SubjectToSearch = ShEmail.range("b3").Value
'to get the inbox folder
Set outlookapp = CreateObject("outlook.application")
Set outlooknamespace = outlookapp.GetNamespace("MAPI")
Set inboxfolder = outlooknamespace.GetDefaultFolder(6)
Set mailitems = inboxfolder.Items
'sort the emails
mailitems.Sort "ReceivedTime", True
'initialize variables
latestreceivedtiem = DateSerial(2023, 1, 1)
For Each mailitem In mailitems
If mailitem.Subject = SubjectToSearch Then
'check if the current email is the latest one
If mailitem.ReceivedTime > latestreceivedtime Then
Set latestEmail = mailitem
latestreceivedtime = mailitem.ReceivedTime
foundEmail = True
End If
End If
Next mailitem
If foundEmail Then
Dim ReplyEmail As Object
Set ReplyEmail = latestEmail.Reply
With ReplyEmail
.To = ShEmail.range("B1")
.CC = ShEmail.range("B2")
.Subject = "Re: " & latestEmail.Subject
.HTMLBody = strHTML & latestEmail.HTMLBody
.Attachments.Add AttachmentPath1
.display
End With
Else
MsgBox "no emails found with the subject:" & SubjectToSearch, vbInformation
End If
我尝试了.body
而不是.HTMLbody
,但也不起作用。
2条答案
按热度按时间6l7fqoea1#
您不能将两个HTML字符串连接在一起,并期望返回一个有效的HTML字符串-这两个字符串必须合并:在HTML中搜索
"<body"
,找到下一个">"
(它处理带有属性的body标签),然后在">"
之后插入HTML。另外,不要循环遍历文件夹中的所有项目-使用Items.Find/
FindNext
或Items.Restrict。根据上面的内容,这并不重要,但是在找到匹配之后,退出循环而不是继续它-您已经以正确的顺序对集合进行了排序。
5cnsuln72#
运行时错误“287”应用程序定义或对象定义错误
您在运行时会得到一个错误,因为代码可能只处理代码中的邮件项示例。请注意,Outlook文件夹可能包含不同的项目类型-文档,约会,笔记等。因此,在访问特定于邮件项的属性之前,您需要确保通过检查类型名称来处理邮件项:
或
其次,遍历文件夹中的所有项并不是一个好主意:
相反,您需要使用
Items
类的Find
/FindNext
或Restrict
方法,在该方法中您只能获取与搜索条件相对应的项。在我为技术博客撰写的文章中阅读更多关于这些方法的信息:多个搜索条件可以通过使用逻辑运算符如AND,OR等组合成单个搜索字符串。
例如,要按主题字符串中的关键字筛选项目,请执行以下操作:
要按接收时间筛选项目,可以使用以下代码:
在哪里
最后,您需要处理格式良好的HTML标记。即使Outlook在大多数情况下处理格式不正确的HTML文档,您也需要确保代码处理格式正确的HTML标记。请参阅https://www.developer.com/languages/xml/well-formed-html/了解更多信息。