base64 закодированные изображения в подписи
Я должен включать некоторые изображения (логотип компании и т. д.) В подписи электронной почты. У меня были всевозможные проблемы с использованием встроенных изображений, созданных рассматриваемой системой электронной почты (они обычно отправляются как вложения) и как связанные изображения (требующие разрешения на их отображение в полученном электронном письме).
Я только что видел некоторое письмо от exchange, которое имеет представление изображения base64 логотипа и использует тег для отображения. Я ищу информацию о том, как я может ли это сделать в подписи электронной почты, если это возможно (как мне создать версию логотипа base64 для начала и какой код мне нужен, чтобы заставить его работать)?
Я пробовал простые вещи, такие как
<body>
<span>
<img src=.... >
</span>
</body>
но все, что я получаю, это текст alt, поэтому я, очевидно, делаю что-то неправильно здесь.
3 ответов:
важно
мой ответ ниже показывает, как вставлять изображения с помощью URI данных. Это полезно для интернета, но не будет работать надежно для большинства почтовых клиентов. Для целей электронной почты будьте уверены, чтобы прочитать ответ Shadow2531 это.
база данных-64 является законным в
imgтег и я считаю, что ваш вопрос-Как правильно вставить такой тег изображения.вы можете использовать онлайн-инструмент, или несколько строк кода создать в base 64 строку.
синтаксис для источника изображения из встроенной данные:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO 9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">
изображение должно быть встроено в сообщение в виде вложения следующим образом:
--boundary Content-Type: image/png; name="sig.png" Content-Disposition: inline; filename="sig.png" Content-Transfer-Encoding: base64 Content-ID: <0123456789> Content-Location: sig.png base64 data --boundaryи HTML-часть будет ссылаться на изображение следующим образом:
<img src="cid:0123456789">В некоторых клиентах src= " sig.ПНГ" тоже будет работать.
у вас в основном есть составное/смешанное, составное/альтернативное, составное/связанное сообщение, где вложение изображения находится в связанной части. Вы можете просмотреть источник этот файл mbox (он использует пример имени файла вместо cid пример), чтобы получить представление.
клиенты не должны блокировать этот образ, так как он не является удаленным.
Или вот составной / альтернативный, составной / связанный пример в виде файла mbox (сохраните как формат новой строки windows и поместите пустую строку в конце. И, не используйте расширение или .расширение МБС):
From From: [email protected] To: [email protected] Subject: HTML Messages with Embedded Pic in Signature MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="alternative_boundary" This is a message with multiple parts in MIME format. --alternative_boundary Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit test -- [Picture of a Christmas Tree] --alternative_boundary Content-Type: multipart/related; boundary="related_boundary" --related_boundary Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: 8bit <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <p>test</p> <p class="sig">-- <br><img src="cid:0123456789"></p> </body> </html> --related_boundary Content-Type: image/png; name="sig.png" Content-Disposition: inline; filename="sig.png" Content-Location: sig.png Content-ID: <0123456789> Content-Transfer-Encoding: base64 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 cHkgSG9saWRheXMgUGFnZQA7 --related_boundary-- --alternative_boundary--вы можете импортировать это в Sylpheed или Thunderbird (с расширением Import/Export tools) или встроенный почтовый клиент Opera. Тогда, например, в Opera вы можете тумблер "предпочитаю обычный текст", чтобы увидеть разницу между HTML и текстовую версию. В любом случае, вы увидите, что версия HTML использует встроенный pic в sig.
недавно у меня была такая же проблема, чтобы включить QR-изображение/png в электронную почту. QR-изображение представляет собой массив байтов, который генерируется с помощью ZXing. Мы не хотим сохранять его в файл, потому что сохранение/чтение из файла слишком дорого (медленно). Так что оба ответа выше не работают для меня. Вот что я сделал, чтобы решить эту проблему:
import javax.mail.util.ByteArrayDataSource; import org.apache.commons.mail.ImageHtmlEmail; ... ImageHtmlEmail email = new ImageHtmlEmail(); byte[] qrImageBytes = createQRCode(); // get your image byte array ByteArrayDataSource qrImageDataSource = new ByteArrayDataSource(qrImageBytes, "image/png"); String contentId = email.embed(qrImageDataSource, "QR Image");предположим, что contentId - это "111122223333", тогда Ваша HTML-часть должна иметь следующее:
<img src="cid: 111122223333">в этом нет необходимости преобразуйте массив байтов в Base64, потому что Commons Mail выполняет преобразование автоматически. Надеюсь, это поможет.
Comments