Вложение прикрепленных изображений в электронные письма HTML

Если я прикреплю изображение к письму, как разместить его в HTML-контенте? Я попытался использовать имя файла как источник изображения, но это не работает.

Ответы

Ответ 1

Более подробно о том, как вы создаете почтовое сообщение HTML.

Результатом будет сообщение multipart-MIME с частью text/html (если вы действительно сделаете это правильно с альтернативной частью типа text/plain) и несколькими изображениями, которые затем ссылаются из HTML.

Для получения дополнительной информации см. RFC 1813 и RFC 2378 о идентификаторе содержимого в смешанном MIME и связанных с ним данных (ссылка на CID в источнике HTML).

Ответ 2

Вы можете использовать тот же путь с свойством src="cid:bgBoletin" тега img.

Ответ 3

Я делаю это таким образом

_mime = new MimeMultipart();
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart = new MimeBodyPart();
DataSource fds = new FileDataSource("C:\\bgBoletin.jpg");

messageBodyPart.setDataHandler(new DataHandler(fds));
messageBodyPart.setHeader("Content-ID", "<bgBoletin>");
_mime.addBodyPart(messageBodyPart);

И в HTM файле используйте ссылку Content-ID таким образом: url (cid: bgBoletin).

Ответ 4

Ответ на ваш вопрос находится в spring docs здесь.

 mailSender.send(new MimeMessagePreparator() {
   public void prepare(MimeMessage mimeMessage) throws MessagingException {
     MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, "UTF-8");
     message.setFrom("[email protected]");
     message.setTo("[email protected]");
     message.setSubject("my subject");
     message.setText("my text <img src='cid:myLogo'>", true);
     message.addInline("myLogo", new ClassPathResource("img/mylogo.gif"));
   }
 });

Тело сообщения является одной из частей многочастного сообщения (обратите внимание, что второй параметр установлен в true в конструкторе MimeMessageHelper, который устанавливает сообщение в многостраничное сообщение).

Линия message.addInline("myLogo"... добавляет изображение в качестве другой части многостраничного сообщения.

Вы можете использовать .setText для установки тела (содержимого HTML) сообщения электронной почты.

Вы можете ссылаться на другие части многостраничной электронной почты (ваше изображение), используя тег cid. Обратите внимание, что атрибут img src src='cid:myLogo'. cid - это идентификатор содержимого изображения, отправленный как одна из частей многостраничного сообщения.

Ответ 5

Если это связано с отправкой писем с сайта, который вы разрабатываете, просто держите изображения на своем сервере, а затем ссылайтесь на них с помощью <img src="url"/>.

Ответ 6

Разделу прикрепления изображения требуется Content-ID

--T4nu9J8b
Content-Type: image/png
Content-ID: <idname>
Content-Transfer-Encoding: base64
Content-Disposition: attachment ;filename="testimage.png"

iVBORw0KGgoAAAANS...
--T4nu9J8b--

Примечание: имя Content-ID должно быть заключено в угловую скобку, как указано

Вставьте его в тег, используя тот же Content-ID (без угловой скобки)

<img alt="Embedded Image" src="cid:idname"/>

Это должно позволить прикрепленное изображение отображаться в HTML!

Ответ 7

Вариант 01:
- прикрепите файл "mySignaturePictue.jpg" в качестве прикрепления к почте
- ссылайтесь на это приложение с тела (вставьте его) с кодом типа:
<img src="cid:mySignaturePicture.png">

Вариант 02:
- преобразовать изображение в строку base64: http://www.motobit.com/util/base64-decoder-encoder.asp
- вставьте его в mailtext/html-тело с кодом, например, <img alt="My Image" src="data:image/jpeg;base64,AWWhcalkjsd/beginning/RXhp/of+/long/base64cod/ZgAATU0/+BlaBlubbZ5u8/61a+Xand/much/more..." />
- Даунсайд: это заблокировано большинством клиентов и увеличит размер почты, см.: https://www.campaignmonitor.com/blog/email-marketing/2013/02/embedded-images-in-html-email/ и https://www.paperstreet.com/blog/email-marketing-embeded-images-cid-what-a-mess/