首页 > 解决方案 > 将文本添加到电子邮件线程

问题描述

我在 Outlook 中搜索我的已发送邮件并将最后一封电子邮件打开到指定的电子邮件地址(这部分已完成)。

我想在电子邮件链中添加文本,同时保持以前的消息完好无损。

下面的代码创建了一个“空白板”,因此所有以前的电子邮件通信都丢失了。

我需要做什么才能将文本添加到电子邮件的正文?

FunctionComposeResponse(searchEmail As String, emailBody As String)
Dim currDateTime As Date: currDateTime = Now()
Dim tenDayPrior As Date: tenDayPrior = DateValue(CStr(Now())) - 10 & " 07:00:00 AM"
Dim olApp As Outlook.Application
Dim olNS As NameSpace
Dim Fldr As Folder
Dim olReply As Outlook.MailItem
Dim msg As Object
Set olApp = New Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")
Set Fldr = olNS.GetDefaultFolder(olFolderSentMail)
For Each msg In Fldr.Items
  If TypeName(msg) = "MailItem" Then
    For Each recipient in msg.recipients
       If recip.Address = searchEmail Then
         If msg.SentOn >= tenDayPrior And msg.SentOn <= currDateTime Then
           Set olReply = msg.ReplyAll
           With olReply
              .BodyFormat = olFormatHTML
              .HTMLBody = emailBody
              .Save
              .Close olSave
           End With
         End If
       End If
    Next recip
  End If
Next msg
End Function

标签: vbams-accessoutlook

解决方案


通过设置

.HTMLBody = emailBody

你会覆盖之前的所有内容。

您需要将文本插入现有的.HTMLBody.

对于我想保留默认 HTML 签名的新邮件项,我使用以下内容 - 检查您现有的内容.HTMLBody以了解这是否也适用于回复(如果不是:适应)。

' emailBody is plain text -> encode as HTML
emailBody = HtmlEncode(emailBody)

' Outlook-HTML: mail text begins with this line:
'  <p class=MsoNormal><o:p>&nbsp;</o:p></p>
' Insert my text instead of the first &nbsp;
oItem.HtmlBody = Replace(oItem.HtmlBody, "&nbsp;", emailBody, Count:=1)

推荐阅读