0
メールを受信すると、すべての文字に疑問符が表示されます。私はどこが間違っているのか混乱している。正しい文字を表示している添付ファイルが表示されています????
のような疑問符が表示されています。私はボディが正しくすべてのアジア言語に変換されていることを確認しましたが、メッセージを確認したときにメールを送信する前に、彼らは??
と表示していました。MimeBodyPartがアジア言語のエンコードUTF-8を設定していません
public void addAttachmentsforMail(String text, MimeMessage message, List<File> attachments, MimeSubtype mimeSubtype) throws MessagingException {
MimeBodyPart mbpText = new MimeBodyPart();
mbpText.setHeader("Content-Type", "text/plain;charset=utf-8");
//I have verified till here the body is getting converted to respective asian languages
if(mimeSubtype.equals(MimeSubtype.HTML)) {
mbpText.setDataHandler(new DataHandler(new ByteArrayDataSource(body, "text/html")));
}
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbpText);
MimeBodyPart mimeAttachment;
for (File file : attachment) {
mbpAttachment = new MimeBodyPart();
FileDataSource foo = new FileDataSource(file);
mimeAttachment.setDataHandler(new DataHandler(foo));
mimeAttachment.setHeader("Content-ID","<" + foo.getName() + ">");
mimeAttachment.setFileName(foo.getName());
mp.addBodyPart(mimeAttachment);
}
//But When I verify the message in log at here before sending the mail all the charcters were converted in to ???
message.setContent(mp);
transport.send(message)
}
これはmbpText.setHeader呼び出しは次の理由mbpText.setDataHandlerのない効果を有していないメール
Message-ID: <[email protected]>
Subject: =?UTF-8?B?5biQ5oi35Y+K5a+G56CB5o+Q6YaS?=
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_Part_10649_-1456564573.1468164040753"
------=_Part_10649_-1456564573.1468164040753
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
?UTF-8?B?....私はこれを私の主題としています。私はmessage.setSubject(body、charset);を使用しています。私はデバッグをしていますが、この時点で本文は正しい中国語の文字と文字セットがUTF-8ですが、メールでなぜこのようなものが件名として表示されていますか?UTF-8?B? – Subham
データハンドラapplication \ octastreamを変更しているときにブランクボディが表示されています。すべての翻訳がchinese.Soにある添付HTMLを取得しています。また、part.setDataHandler(new DataHandler(new ByteArrayDataSource text.getBytes( "UTF-8")、 "text/html"))); コンテンツタイプ:multipart/mixed; \t境界= "---- = _ Part_27_-1687030402.1468221528071" ------ = _ Part_27_-1687030402.1468221528071 コンテンツタイプ:text/html; charset = ISO-8859-1 コンテンツ転送エンコーディング:quoted-printable – Subham
非ASCII文字が含まれているため、サブジェクトがエンコードされています。 "=?UTF-8?..."はエンコードされたテキストです。それはそれを表示する前にメーラーによってデコードされます。本文の場合、文字列にデータがある場合は、使用している非常に複雑なsetDataHandler呼び出しではなく、setTextメソッドを使用します。データがファイルから取得されている場合は、attachFileメソッドを使用しますが、ファイルで使用されているcharsetエンコーディングを知り、メソッドのcontentType引数にそのエンコーディングを含める必要があります。 –