EWS проблема со встроенными изображениями при отправке из приложения, отличного от Outlook - PullRequest
0 голосов
/ 16 января 2020

У меня есть служба, которая работает на SQL Службы Integration Services, эта служба читает почтовый ящик и пересылает прочитанные электронные письма другим получателям, все в порядке с встроенными изображениями, когда они добавляются вручную с помощью редактора Outlook (перетаскивание или вставить изображение). Но когда электронная почта создается с использованием VBA и вставки изображений в виде вложений и именования их 'cid', когда сообщение читается из EWS, оно не распознает изображения как встроенные изображения.

Так мое приложение считывает электронную почту (NormalizedBody) из EWS, когда электронное письмо было отправлено с помощью редактора Outlook, а изображения вставлены с помощью кнопки вставки изображения: (Я пропустил другие теги html и показывает только теги 'img'):

<img src=\"cid:image001.png@01D5CC5D.4C661140\" width=\"135\" height=\"166\" id=\"Imagem_x0020_1\">
<img src=\"cid:image002.png@01D5CC5D.4C661140\" width=\"135\" height=\"166\" id=\"Imagem_x0020_2\">
<img src=\"cid:image003.png@01D5CC5D.4C661140\" width=\"135\" height=\"166\" id=\"Imagem_x0020_3\">

И свойства вложений из ' image001 'как пример:

ContentId : "image001. png@01D5CC5D.4C661140"

IsInline : true

Сейчас, если я создайте электронную почту, используя Outlook VBA с этим кодом:

Dim olApp As Outlook.Application
Dim olMail As Outlook.MailItem

Set olApp = New Outlook.Application

Set olMail = olApp.CreateItem(olMailItem)

olMail.To = "TelemetriaCubosOperacCIV@correio.itau.com.br"
olMail.Subject = "VBA MAIL TEST"


olMail.Attachments.Add "C:\Users\Public\_testeMailing\Image001.png", olByValue, 1, "Image001"
olMail.Attachments.Add "C:\Users\Public\_testeMailing\Image002.png", olByValue, 2, "Image002"
olMail.Attachments.Add "C:\Users\Public\_testeMailing\Image003.png", olByValue, 3, "Image003"

olMail.BodyFormat = olFormatHTML

Dim strHTML As String

strHTML = "<table><tr>" & _
"<td><img src='cid:Image001.png' /></td>" & _
"<td><img src='cid:Image002.png' /></td>" & _
"<td><img src='cid:Image003.png' /></td>" & _
"</tr></table>"

olMail.HTMLBody = strHTML
olMail.Send

При чтении NormalizedBody из EWS теги HTML img отображаются следующим образом:

<img src=\"cid:342EA5ED2B36174FA24B4FFE34AD84FA@1\">
<img src=\"cid:37448D8F2D450541A18641D2EE5BB152@1\">
<img src=\"cid:3E2CFE241DBFF943B815142BC3631890@1\">

И свойства image001 являются:

ContentId : null

IsInline : false

Возможно, если я открою это письмо с помощью клиента Outlook, тело письма показывает изображения правильно.

Но если я попытаюсь создайте пересылку сообщения (CreateForward ()), изображения превращаются в вложения (не встроенные), а расположение изображений в cid показано прерывистым.

Я думаю, что проблема заключается в способе вставки изображений в сообщение при использовании Код VBA, а не с чтением из EWS это правильно? Есть ли лучшие способы создания электронной почты с использованием 'cid' и встроенных изображений?

Спасибо, и извините за ошибки в engli sh.

1 Ответ

0 голосов
/ 17 января 2020

В строке

olMail.Attachments.Add "C:\Users\Public\_testeMailing\Image001.png", olByValue, 1, "Image001"
olMail.Attachments.Add "C:\Users\Public\_testeMailing\Image002.png", olByValue, 2, "Image002"

Вы устанавливаете параметр положения, который работает, только если тело имеет значение rtf https://docs.microsoft.com/en-us/office/vba/api/outlook.attachments.add ref (

Этот параметр применяется только к сообщениям электронной почты, использующим формат Rich Text: это позиция, в которой вложение должно быть помещено в основной текст сообщения. Значение 1 для параметра Position указывает, что вложение должно располагаться в начале сообщения. body. Значение 'n', превышающее количество символов в теле элемента электронной почты, указывает, что вложение должно быть помещено в конец. Значение 0 делает вложение скрытым.

I Предлагаю попробовать ответ в https://social.msdn.microsoft.com/Forums/vstudio/en-US/6c063b27-7e8a-4963-ad5f-ce7e5ffb2c64/how-to-embed-image-in-html-body-in-c-into-outlook-mail?forum=vsto

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...