web-dev-qa-db-ja.com

添付画像をHTMLメールに埋め込む

メールに画像を添付した場合、HTMLコンテンツに画像を配置するにはどうすればよいですか?ファイル名を画像ソースとして使用しようとしましたが、うまくいかないようです。

17
user83358

HTMLメールメッセージの作成方法をより具体的にしてください。

結果は、text/html部分(実際にtext/plainタイプの代替部分で正しく実行する場合)といくつかの画像を含むmultipart-MIMEメッセージになり、これらはHTML内から参照されます。

混合MIMEおよび関連データ(HTMLソースではCIDで参照)のcontent-idの詳細については、 RFC 181 および RFC 2378 を参照してください。

11
Lucero

imgタグのsrc="cid:bgBoletin"プロパティでも同じように使用できます。

5

あなたの質問への答えは春のドキュメントにあります ここ

 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"));
   }
 });

メッセージの本文は、マルチパートメッセージの一部の1つです(メッセージをマルチパートメッセージに設定するMimeMessageHelperのコンストラクターでtrueに設定された2番目のパラメーターに注意してください)。

message.addInline("myLogo"...は、マルチパートメッセージの別の部分として画像を追加します。

.setTextを使用して、電子メールメッセージの本文(HTMLコンテンツ)を設定できます。

タグcidを使用すると、マルチパートメールの他の部分(画像)を参照できます。 imgsrc属性がsrc='cid:myLogo'であることに注意してください。 cidは、マルチパートメッセージの一部として送信される画像のコンテンツIDです。

4
Luis Ramos

私はこのようにやっています

_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)。

3

これが開発中のWebサイトからの電子メールの送信に関係している場合は、サーバーに画像を保持してから、<img src="url"/>を使用して画像にリンクしてください。

2
TheTXI

画像添付セクションにはContent-IDが必要です

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

iVBORw0KGgoAAAANS...
--T4nu9J8b--

注:Content-ID名は、指定されたとおり、angular括弧で囲む必要があります

同じContent-IDを使用してタグに埋め込みます(angular括弧なし)

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

これにより、添付された画像をHTMLに表示できるようになります。

1
Flyn Sequeira

オプション01:
-ファイル「mySignaturePictue.jpg」をメールの添付ファイルとして添付します
-この添付ファイルを本文から参照(挿入)し、次のようなコードを使用します。
<img src="cid:mySignaturePicture.png">

オプション02:
-画像をbase64文字列に変換します: http://www.motobit.com/util/base64-decoder-encoder.asp
-次のようなコードでmailtext/html-bodyに挿入します
<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/

1
eli