1

画像付きのメール署名を実装する必要があります。現在、すでに機能しているメール署名のテキストのみをサポートしています。メール署名内に画像を挿入できる機能を提供する必要があります。myapplication内のユーザーと、gmail、yahooなどの外部メールドメインのユーザーにメールを送信できます。アプリケーションシステム内のユーザーにメールを送信すると、システムはDBにエントリを作成し、受信者は受信トレイ(内部で受信)を受信します。 dbからのメールを読んでください)。これで、ユーザーがGmailで外部ユーザーにメールを送信すると、javaxmailapiが使用されます。同様に、私は外部のメールドメイン(gmail、yahooなど)からメールを受け取ることができます。今、私はtisの要件に基づいていくつかの質問があります:-

1)Gmailなどの外部メールドメインが署名内の画像を(私のアプリケーションメールドメイン)などの別のドメインに送信する方法の基準はありますか?Gmailユーザーに関連するもう1つのポイントは、2つの画像を持つことができます。1つは署名用で、もう1つは本体内の画像です。どの画像が署名に属しているかをどのように判断しますか?そのために定義されたプロパティはありますか?

2)また、ユーザーが画像を受信したときに正しくレンダリングされるように、画像を含む電子メール署名を(内部アプリケーションユーザーまたは外部メールドメインユーザーのどちらに)送信するための最良/一貫したアプローチが何であるかを理解できませんか?

ポイント2で頭に浮かんだこと: -jspで画像を表示する方法で提案された解決策を使用できると以前は思っていましたか?。ここで、タグ<.img src = "/ getImage.action?imageId = 123">を使用すると、アクションクラスまたはサーブレットのdbからイメージをフェッチして戻ることができます。ただし、Gmailでユーザーにメールを送信すると、ユーザーはサーブレットにアクセスできなくなることに注意してください。したがって、このアプローチは要件に適合していないようです。 それから私はTimMedoraによる解決策が素晴らしく見えた電子メール署名の別の素晴らしいstackoverflowリンクbase64エンコードされた画像に出くわしました が、解決策の下のコメントはGmailがそれをサポートしていないようですGmail、yahooのようなメールドメインが提案された解決策をサポートしている場合、私は本当にやるべきだと思います。その場合、画像を添付ファイルとしてではなく、base64文字列として送信できます。

ポイント1と2の両方に関して、私にいくつかの指針/アプローチを提供していただければ、人々は本当に感謝するでしょう。

4

2 に答える 2

6

電子メールメッセージに画像を含めるには、最初に画像をMIME添付ファイルとして電子メールに含める必要があります。これらの各添付ファイルには、「Content-ID」ヘッダーが必要です。

--f46d0444ea0d6991ba04b91c92e6
Content-Type: image/gif; name="theImage.gif"
Content-Transfer-Encoding: base64
Content-ID: <theImage@abcd>

[base64 string]
--f46d0444ea0d6991ba04b91c92e6--

2)次に、電子メールメッセージで、タグのsrc属性にContent-IDを含めます。<img>

<img src="cid:theImage@abcd" />
于 2012-06-20T17:27:30.013 に答える
0

Gmailがバイト配列から埋め込まれた画像を表示するために、ByteArrayDataSourceを使用してHtmlEmailに埋め込むという別の同様の質問に対する回答を投稿しました。コードスニペットは次のとおりです。

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");
于 2015-03-23T07:49:28.510 に答える