Пересылка электронной почты Outlook без добавления подписи или От: и Кому: оригинальной электронной почты - PullRequest
0 голосов
/ 29 мая 2018

Я хочу переслать письмо, полученное в Outlook, на новый адрес без изменений - точного клона, без добавления информации о конверте или подписи.

В электронном письме всегда будет таблица HTML втело и должно быть сохранено идентично.Я могу переслать его, но он всегда добавляет пустое тело письма с подписью «над» исходным письмом, а затем есть стандартные атрибуты From: и To: и email выше оригинального письма.

IsЕсть ли способ удалить это?Я попытался изменить это, чтобы сгенерировать «новый» объект, так как новый объект не вводит тело HTML перед пересылкой.

Sub Send_Forward(ByRef oMail As Object, repBodyStr As String, sendMail As 
Boolean)

Dim myForward As Object                   

Set myForward = oMail.Forward
myForward.Subject = myForward.Subject

myForward.HTMLBody = repBodyStr & "<br>" & myForward.HTMLBody
myForward.Recipients.Add "xxx@xxx.net"

myForward.Display


ExitSub:

Set myForward = Nothing

End Sub

1 Ответ

0 голосов
/ 29 мая 2018

Создайте новый элемент (Application.CreateItem), затем просто скопируйте свойство HTMLBody из существующего сообщения и добавьте получателей.

ОБНОВЛЕНИЕ: если вам нужно скопировать вложения (например, изображения), вам нужно будет сохранить вложения из исходного сообщения (Attachment.SaveAsFile), а затем добавить их как вложения в новое сообщение (MailItem.Attachments.Add).Обратите внимание, что это не будет работать со встроенными объектами OLE (в случае формата RTF) и вложенными вложениями сообщений.Для изображений вам также необходимо скопировать свойство PR_ATTACH_CONTENT_ID MAPI, используя Attachment.PropertyAccessor.
Также обратите внимание, что MailItem.Copy не будет работать, так как состояние отправленного сообщения будет скопировано (что не то, что вы хотите).

Если используется Погашение , это опция, которая позволяет сделать копию сообщения без копирования его отправленного состояния.Что-то вроде следующего должно сделать работу (с макушки головы):

Set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set originalMsg = Session.GetRDOObjectFromOutlookObject(Application.ActiveExplorer.Selection(1))
set newMsg = Session.GetDefaultFolder(olFolderDrafts).Items.Add
'copy the message and clear out recipients
originalMsg.CopyTo(newMsg)
newMsg.Recipients.Clear
newMsg.Recipients.Add "xxx@xxx.net"
newMsg.Save
'now reopen the message in OOM and diplay it. Or you can use newMsg.Display
set myForward = Application.Session.GetItemFromID(newMsg.EntryID)
myForward.Display
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...