次のようなコードを含む電子メールを送信する 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");
これを解決するのを手伝ってください。