3

Javaメールでメールを送っています。以下を使用して送信者情報を設定します。

msg.setFrom(new InternetAddress("test@example.com", "Schaltfläche"));

問題:このメッセージをGMailに送信すると、送信者がSchaltfl?cheと表示されます。

ソースでは次のとおりです。

From: "=?ANSI_X3.4-1968?Q?Schaltfl=3Fche?=" <test@example.com>

どちらに見えますか...わかりましたか?少なくとも、 äをエンコードするための努力がなされたようです。

だから、私は何が間違っているのですか?私はGMailのせいにすることができたが、それは一筋縄ではいかず、テスターは他のクライアントでもエラーを見ている。

(関連しているが関連していない:同じ名前がメッセージ本文に正しく表示されます)

4

2 に答える 2

2

さらに検索すると、次の2つのことがわかりました。

  • ANSI_X3.4-1968は明らかに の正規名ですASCIIが、もちろんäをエンコードすることはできません。また、?=3Fとしてデコードします。(そもそもエンコードが必要な理由がわからない)。
  • コンストラクターがあるInternetAddress(mail, name, charset)

だから、私は今、問題を解決するInternetAddresswithを作成してUTF-8います。

于 2012-08-28T14:16:01.383 に答える
0

Good to see that defining the charset for InternetAddress object fixed it for you.

Another solution (especially if you do not have possibility to change the code) would be to run JVM with defined encoding via corresponding VM argument:

-Dfile.encoding=utf-8

于 2014-09-18T12:58:34.867 に答える