Различия между ручной пересылкой и электронной почтой и использованием макроса для пересылки электронной почты в Outlook

Я не заметил, что ручная пересылка электронной почты с помощью кнопки пересылки Outlook (2016) дает мне другой результат, чем когда я использую макрос для пересылки. Вот мой макрос:

Sub W()

Dim helpdeskaddress As String
Dim objMail As Outlook.MailItem
Dim strbody As String
Dim oldmsg As String
Dim senderaddress As String
Dim addresstype As Integer

' Set this variable as your helpdesk e-mail address
helpdeskaddress = "[email protected]"

Set objItem = GetCurrentItem()
Set objMail = objItem.Forward

' Sender E=mail Address
senderaddress = objItem.SenderEmailAddress

'Searches for @ in the email address to determine if it is an exchange user
addresstype = InStr(senderaddress, "@")

' If the address is an Exchange DN use the Senders Name
If addresstype = 0 Then
senderaddress = objItem.SenderName
End If

'adds the senders e-mail address as the created by object for the ticket and appends the message body
strbody = "#created by " & senderaddress & vbNewLine & vbNewLine & objItem.Body

objMail.To = "[email protected]"
objMail.Subject = objItem.Subject
objMail.Body = strbody

' remove the comment from below to display the message before sending
'objMail.Display

'Automatically Send the ticket
objMail.Send
MsgBox ("The email has been sent for verification. You may receive a report in a few moments.")

Set objItem = Nothing
Set objMail = Nothing
End Sub

и функция для получения текущего элемента объекта электронной почты:

Function GetCurrentItem() As Object
Dim objApp As Outlook.Application
Set objApp = Application
On Error Resume Next
Select Case TypeName(objApp.ActiveWindow)
  Case "Explorer"
    Set GetCurrentItem = _
    objApp.ActiveExplorer.Selection.Item(1)
  Case "Inspector"
    Set GetCurrentItem = _
    objApp.ActiveInspector.CurrentItem
  Case Else
End Select
End Function

Когда я пересылаю электронное письмо, я вижу все изображения (связанные с другим веб-сайтом в Интернете), которые я пересылаю, но когда я использую следующий макрос, все, что я вижу, это текст внутри электронного письма. Могу ли я в любом случае сделать следующий макрос для выполнения той же работы, что и переадресация вручную?


person mazkopolo    schedule 04.10.2017    source источник
comment
В этом коде есть несколько желтых флажков, указано ли Option Explicit? Rubberduck (надстройка VBIDE с открытым исходным кодом, которой я руковожу) не видит объявления для objItem, и ни oldmsg, ни helpdeskaddress используются (несмотря на то, что helpdeskaddress назначено). Кроме того, если GetCurrentItem возвращает все выбранные элементы (например, в Variant/Array), а вызывающий объект повторяет их, ваш макрос будет работать со всеми выбранными элементами, а не только с первым.   -  person Mathieu Guindon    schedule 04.10.2017


Ответы (1)


Чтобы переслать исходный контент, используйте HTMLBody вместо Body:

strbody = "HTML-encoded content"

objMail.HTMLBody = strbody & objMail.HTMLBody

Пример HTML Формат определенного текста в Outlook

person niton    schedule 04.10.2017
comment
Вы не можете и не должны объединять две строки HTML - это не может привести к допустимой строке HTML. эти два должны быть объединены. - person Dmitry Streblechenko; 04.10.2017