1

Jodd 電子メール ライブラリのメイン ページhttp://jodd.org/doc/email.html には、ライブラリを使用して画像を埋め込む方法 (単にファイルとして添付するだけでなく) の非常に具体的な例があります。あなたが送信しようとしているメール。

残念ながら、画像を含む電子メールの部分の Content-Type は次のようになります。

Content-Type: application/octet-stream

しかし、正しく表示するには、次の Content-Type が必要です。

Content-Type: image/png

たとえば、png画像がある場合。

しかし、Jodd 電子メール ライブラリ内でこれを構成する方法が見つからないようです。

これが私が求めているものです。ありがとうございました :)

4

1 に答える 1

1

Joddサイトの例に従った場合は、メソッドembedFile()を使用してファイルを埋め込みました。このメソッドは、次の「ショートカット」メソッドです。

attach(new FileAttachment(file));

ここで、attach()は、コンテンツを添付するための中心的な汎用メソッドです。FileAttachmentは、おそらく拡張子に基づいて、コンテンツタイプを設定するためにjavax.mailに依存しています。

したがって、コンテンツタイプを手動で設定するには、汎用のattach()メソッドを使用します。たとえば、次のようなファイルを埋め込みます。

.embedFile("d:\\c.xxx")

xxx拡張子では認識されないため、コンテンツタイプを「application/octet-stream」に設定します。代わりに、次を使用できます。

.attach(new ByteArrayAttachment(
        FileUtil.readBytes("d:\\c.xxx"), "image/png", "c.png", "c.png"))

ここでは、ファイル名に関係なく、コンテンツタイプを手動で設定できます。ファイルバイトをロードしたくない場合は、代わりにInputStreamを渡すことができます。

別の解決策( embedFileを使い続けたい場合)は、 mimeタイプの設定を確認することです。

注:コンテンツの添付方法には多くの組み合わせ(バイト、入力ストリーム、ファイル、インラインなど)があるため、添付メソッドはJodd3.4.1でリファクタリングされます。より開発者に優しいAPIを提供するために。乞うご期待 ;)

于 2012-11-27T10:09:28.053 に答える