Доступ к VBA для поиска последнего сообщения и добавления текста в тему сообщения - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь написать какой-нибудь VBA, который будет искать мою отправленную почту в 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

1 Ответ

1 голос
/ 10 июля 2019

Установив

.HTMLBody = emailBody

вы перезаписываете все, что было там раньше.

Вам необходимо вставить свой текст в существующий .HTMLBody.

Для новых почтовых элементов, где я хочу сохранить подпись HTML по умолчанию, я использую следующее - проверьте существующую .HTMLBody, чтобы выяснить, будет ли это также работать для ответа (если нет: adapt).

' 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...