1

次のようなコードを含む電子メールを送信する Java コードがあります。実際には、Httprequest パラメータから Mimemessage を取得しました。

Mimemessage が Multipart content-type の場合、メッセージの送信中に問題は発生しません。

メッセージが text/plain および text/html コンテンツ タイプの場合、設定した content-transfer エンコーディングが本文に適用されませんでした。

このドキュメントに基づいて

Q: JavaMail がすべてのエンコードとデコードを行ってくれますが、体の一部のエンコードを手動で制御する必要があります。A: まれにエンコーディングを制御する必要がある場合、JavaMail のデフォルトの動作をオーバーライドする方法がいくつかあります。簡単なアプローチは次のとおりです。メッセージ全体を作成した後、msg.saveChanges() を呼び出してから、mbp.setHeader("Content-Transfer-Encoding", "base64") などを使用して、指定された本文部分の base64 エンコードを強制します。

もう 1 つの方法は、MimeBodyPart をサブクラス化し、updateHeaders メソッドをオーバーライドして、最初に super.updateHeaders() を呼び出してから、上記のように Content-Transfer-Encoding ヘッダーを設定することです。

上にも当てはまります。しかし、それは私にはうまくいきません。

InputStream ins = request.getInputStream();
MimeMessage msg = new MimeMessage(session,ins);
msg.setContent("some non-Ascii content","text/plain; charset="UTF-8"");
//Tried setheader before saveChanges() method, also doesn't work for me
//msg.setHeader("Content-Transfer-Encoding","base64"); 
msg.saveChanges();
//Now tried based on above docs after saveChanges method, also doesn't work
msg.setHeader("Content-Transfer-Encoding","base64"); 

これを解決するのを手伝ってください。

4

1 に答える 1

0

この質問のほとんどを他の投稿で複製しましたが、私はその一部に回答しました。

完全な MIME メッセージをサーバーに送信してから編集するよりも、http 要求でメール メッセージのコンテンツを送信し、そのコンテンツに基づいてサーバー上で新しいメッセージを作成する方がよいでしょう。

于 2013-10-21T17:45:07.613 に答える