2009-05-28 35 views
15

画像をメールに添付すれば、どのようにHTMLコンテンツに配置できますか?私はちょうどイメージソースとしてファイル名を使用してみましたが、動作していないようです。HTMLメールに添付画像を埋め込む

+0

これはプログラムによるものか、メールクライアントによるものですか? – biggusjimmus

答えて

10

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

結果はtext/html部分(実際にtext/plainの代わりの部分で正しく機能する場合)といくつかの画像がHTML内から参照されるmultipart-MIMEメッセージになります。

混合MIMEおよび関連データ(HTMLソースのCIDで参照される)のコンテンツIDの詳細については、RFC 1813およびRFC 2378を参照してください。

+1

これはhtmlとimageの部分を含むマルチパートMIMEメッセージとして構築されています。これらのRFCを正しく読んでいると、画像添付ファイルにコンテンツIDを入れて、画像ソースとしてcid:xxxを使うだけでよいのではないでしょうか。 – user83358

+0

これは正しいことです。他のすべてがすでにMIMEメッセージに埋め込まれていれば、簡単に埋め込むことができます。 – Lucero

2

開発しているウェブサイトからメールを送信する場合は、サーバー上に画像を保存してから、<img src="url"/>を使用して画像にリンクしてください。このように

+13

...最新のメールアプリケーションは、ユーザーが明示的に確認しない限り、セキュリティ上の理由からそれらのイメージを表示しません。 (小)画像を埋め込むことは、メッセージが意図したとおりに表示されるようにするためにはるかに優れています。 – Lucero

+0

@Luceroは積極的にアプリケーションの動作を回避することは、私の意見ではタブーです。ユーザーは、その機能のために特定のアプリケーションを使用することを選択しました。実際に、この機能を回避するために他の人が邪魔になってしまっている可能性があります。最新のメールアプリケーションのほとんどは、特定の送信者(またはドメイン)からの画像を常に表示するオプションを提供し、ユーザーが将来画像を見たいかどうかを決定させることができます。 –

+1

@ NathanCox、機能をバイパスすることはまったくありません。電子メールクライアントは、ユーザーが公開されないようにするためのイメージをダウンロードしません(Webアドレスがパーソナライズされている場合、送信者はいつメールが読み取られたかを知ることができ、電子メールアドレスはまだ有効で使用中です)。リンクされた画像を表示しないことはセキュリティ上の措置であり、画像を見るユーザーの好み(これは一部の電子メールクライアントでは別の設定)とは何の関係もありません。 – Lucero

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ファイルWHEリファレンス・ド・コンテンツIDで背景:URL(CID:bgBoletin)。

+0

あなたのクラスはMAILですか?... "MimeMultipart" - >クラスのアクティベーションを使用するには? – delive

4

src="cid:bgBoletin"と同じ方法で、imgタグを使用することができます。

3

ご質問に対する回答は、春のドキュメントhereです。

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

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

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

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

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

+0

あなたのクラスMimeMessage MimeMessageHelperを投稿するか、直接.jarを投稿してください – delive

0

オプション01:
- メール
に添付ファイルとしてファイル "mySignaturePictue.jpg" を添付 - 基準体からこの添付ファイル(それを挿入する)ようなコードwhith:
<img src="cid:mySignaturePicture.png">

オプション02:
- base64文字列に自分のイメージを変換:http://www.motobit.com/util/base64-decoder-encoder.asp
-
<img alt="My Image" src="data:image/jpeg;base64,AWWhcalkjsd/beginning/RXhp/of+/long/base64cod/ZgAATU0/+BlaBlubbZ5u8/61a+Xand/much/more..." />
ようなコードでMAILTEXT/htmlのボディにそれを挿入- 欠点:これはほとんどのクライアントによってブロックされ、メールサイズを増やします: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/

関連する問題