Cid в изображениях не работает при отправке почты со встроенными изображениями

У меня есть тело письма со встроенным изображением, установленным следующим образом:

<img src="cid:<<content-id>>">

я использую nodemailer отправлять письма. У меня также есть относительный URL-адрес изображения. Но изображение не отображается в Outlook. Похоже на cid не работает с последними версиями Outlook.

Другие опции?

Можно ли получить base64 изображения в nodejs. Я видел пример с canvas а также xmlhttprequest но это не может быть сделано в узле без использования внешних модулей, которые я не хочу.

Любые решения, пожалуйста?

1 ответ

Используя пример, если ваш html свойство это:

<p><img src="cid:c001" /></p>

затем attachments свойство должно быть следующим:

[ { path: "data:image/gif;base64,...image data here....",
     cid: "c001"
} ]

Для дополнительных встроенных изображений просто добавьте их в attachments массив.

Выше будет генерировать почту следующим образом:

Content-Type: multipart/alternative; boundary="s1"

--s1
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

    ...the (plain)`text` part of your message
--s1
Content-Type: multipart/related; type="text/html"; boundary="s2"

--s2
Content-Type: text/html

<p><img src="cid:c001" /></p>
--s2

Content-Type: image/gif; name=attachment-1.gif
Content-ID: <c001>
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=attachment-1.gif

...image data here....
--s2
--s1
Другие вопросы по тегам