1

デスクトップ アプリから通知を受信し、ユーザーの言語に応じて、言語固有の「ありがとう」メールを送信する 1.3.7 で作成されたアプリケーションを展開しようとしています。電子メールは、次のように javamail MimeMessageHelper を使用してテンプレートから作成されます。

 MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
 helper.setFrom(new InternetAddress(config.td.mail.from.email,config.td.mail.from.text))
 helper.setTo((mailDetails.to) as String)
 helper.setSubject(config.td.mail.from.regSubject)
 helper.setText(buildRegBody(mailTemplate, mailDetails), true)

実際の mailTemplate ファイルはすべて UTF-8 でエンコードされています。アプリをローカルで実行すると、電子メールはエラーなしで送信されますが、Tomcat に展開すると、電子メールのテキスト内のすべての国際文字が「������」に置き換えられます。正しい UTF-8 照合を使用して国際文字を MySQL データベースに書き込むときに、同様の問題が発生しました。

私の設定ファイルには次の行が含まれています:

grails.views.default.codec = "none"
grails.views.gsp.encoding = "UTF-8"
grails.converters.encoding = "UTF-8"

私は無駄に次のことを試しました:

  • Tomcat サーバー xml のコネクタ要素に UTF-8 エンコーディング ステートメントを追加しました
  • charEncodingFilter が web.xml のチェーンの最初にあることを確認しました
  • 引数「-Dfile.encoding=UTF-8 war」を使用して本番戦争を作成しました

これらは他のほとんどのユーザーの問題を解決しているように見えますが、今ではアイデアが尽きてしまいました - どんな助けや提案も大歓迎です.

4

1 に答える 1

2

「buildRegBody は何をしますか? コードを投稿できますか?」Sergio さん、これはテンプレートからメールの本文を作成する小さなメソッドです。

Loteqさん、ご提案ありがとうございます。すべてのファイルが正しくエンコードされており、Tomcat はファイルを UTF-8 としてエンコードするように設定されていました。問題は、Tomcat を実行している JAVA にありました。以下を追加して解決:

-Dfile.encoding=UTF-8

Catalina.sh の「JAVA OPTS」または /etc/init.d/Tomcat スクリプト (環境によって異なります) に追加し、Tomcat サーバー xml のコネクタ要素にエンコーディング ステートメントを設定します (上記を参照)。それが私に引き起こした頭痛を他の誰かに救うことを願っています!

于 2012-10-09T09:11:17.553 に答える