2016-09-16 5 views
0

hereのようなJavaMail APiを使用して電子メールに添付されたファイルの電子メールにリンクを埋め込むようにしています。 これは私のコードです:JavaMailを使用して添付ファイル用の電子メールメッセージにリンクを埋め込むことができません

MimeMultipart multipart = new MimeMultipart("related"); 
 

 
BodyPart messageBodyPart = new MimeBodyPart(); 
 
String attachment = "/path/test.pdf"; 
 
File fAtachh = new File(attachment); 
 

 
String htmlText = "<a href='cid:file'>test.pdf</a>"; 
 
messageBodyPart.setContent(htmlText, "text/html"); 
 
multipart.addBodyPart(messageBodyPart); 
 

 
MimeBodyPart messageBodyPartAttach = new MimeBodyPart(); 
 

 
try { 
 
\t messageBodyPartAttach.attachFile(fAtachh); 
 
} catch (IOException e) { 
 
\t logger.info("Exception" + e.getMessage()); 
 
} 
 

 
messageBodyPartAttach.setContentID("<file>"); 
 

 
multipart.addBodyPart(messageBodyPartAttach); 
 

 
message.setContent(multipart);

問題は、そのリンクが動作しないです。

ErrorLink

で最後のコードを変更した場合:

MimeMultipart multipart = new MimeMultipart("related"); 
 

 
MimeBodyPart messageBodyPart = new MimeBodyPart(); 
 

 
String attachment = "/path/test.pdf"; 
 
String htmlText = "<a href='cid:file'>test.pdf</a>"; 
 

 
messageBodyPart.setContent(htmlText, "text/html"); 
 
multipart.addBodyPart(messageBodyPart); 
 

 
MimeBodyPart messageBodyPartAttach = new MimeBodyPart(); 
 
DataSource fds = new FileDataSource 
 
\t   (attachment); 
 
messageBodyPartAttach.setDataHandler(new DataHandler(fds)); 
 
messageBodyPartAttach.setHeader("Content-ID","<file>"); 
 

 
multipart.addBodyPart(messageBodyPartAttach); 
 

 
message.setContent(multipart);

リンクは動作しますが、ファイル名と拡張子が間違っている:

WrongFileName

私はこの方法でファイル名を変更しようとしました:

messageBodyPartAttach.setFileName("test.pdf");

ファイル名を設定した場合、li nkは最初のコードのようには機能しません。

提案がありますか?

ありがとうございます!

答えて

0

attachFileメソッドはファイル名を設定し、Content-DispositionをATTACHMENTに設定します。マルチパート/関連メッセージでは、メッセージを表示するためにどのメールリーダーを使用しているかにもよりますが、おそらくそれらは設定したくありません。

setContentIDメソッドを使用する場合と、setHeaderメソッドを "Content-ID"で使用する場合は、機能が異なるはずはありません。

通常、マルチパート/関連メッセージは、htmlパーツがメッセージに含まれる画像パーツを参照できるようにするために使用され、htmlパーツとともに表示されます。おそらく、メールリーダーは、htmlと一緒にpdfファイルをインラインで表示することはありません。

おそらく質問することは、正確に達成しようとしていることですか?

ユーザーが保存または表示するためにクリックできる正しいファイル名で添付ファイルとしてpdfファイルを表示したい場合は、マルチパート/関連の代わりに(デフォルトの)multipart/mixedを使用する必要があります。 htmlテキストの添付ファイルへのリンクを埋め込む良い方法があるかどうかはわかりません。他のメーラーでこのようなメッセージを作成できる場合は、そのメッセージの構造を調べて、JavaMailを使用してそのメッセージを複製することができます。

+0

ファイルの内容を表示せずに添付ファイルを本文メッセージにリンクしようとしています。 Content-DispositionをINLINEに設定しましたが、機能しません。 とにかく私はあなたに同意します。 HTMLテキストにファイルを添付するのは良い考えではありません。ほとんどの電子メールプロバイダは、システムにとって危険なファイルを解釈することができます。 ありがとうございます。 –