GeneXusのメール送信機能で文字化け

GeneXus15からか、GeneXusのメール機能を普通に使って送信をすると
メーラーによっては本文が文字化けするようになってしまいました。

GeneXusのメール送信機能

環境と現象

GeneXus16U2
Java1.8
Tomcat8.5

文字化けするのはOutlookが代表です。
Notesのメーラーも一部文字化けしました。
WEBブラウザでのGmailは文字化けしませんでした。

ちなみに添付ファイルに日本語のファイル名を設定すると、
「無題のファイル00046.dat」といった名前に変換されてしまいました。
メーラーによって名前の部分は変わるようです。

※GeneXusでの記述がテキストメールの場合に発生します
&PI_MAIL_MESSAGE.Text = 'テストメールです。テキスト'


原因

メールヘッダーを見ると分かります。

Subject: =?UTF-8?B?44OG44K544OI44Oh44O844Or?=
Content-Type: text/plain; charset=MS932

件名はUTF-8ですが、本文がMS932となっており、
メーラーによっては文字コードが複数設定されていると、文字化けさせてしまうようです。


※GeneXusでの記述をHTMLメールにすると
&PI_MAIL_MESSAGE.HTMLText = 'テストメールです。HTML'

Subject: =?UTF-8?B?44OG44K544OI44Oh44O844Or?=
Content-Type: text/html; charset=utf-8

このような形となり、文字化けはしませんが、
添付ファイルは「無題のファイル000XX.dat」という形のままです。


対応方法

残念ながらGeneXus側で件名や本文、添付ファイルの文字コードを調整することは出来ず、
Tomcat側の設定で調整することで、対応できます。

Tomcatの起動オプションで、下記設定を行う。
CATALINA_OPTS=
-Dmail.mime.encodefilename=true
-Dmail.mime.charset=UTF-8

【Windowsの場合】
Configure TomcatのJava→Java Optionsに下記を追加して再起動

-Dmail.mime.encodefilename=true
-Dmail.mime.charset=UTF-8


【Linuxの場合】
下記内容をtomcat8/bin/ディレクトリ内のsetenv.shに記述。setenv.shが無ければ作成して記述
setenv.shはcatalina.shから呼ばれる(ファイルが存在する場合のみ呼ばれるようになっている)

#!/bin/sh
CATALINA_OPTS="-Dmail.mime.encodefilename=true -Dmail.mime.charset=UTF-8"

※LinuxはTomcatの起動の仕方(sh実行か、サービス実行か 等)によって
 設定方法が変わりますので、ご注意ください。



これでテキストメールでも、OutLoockでも
文字化け、添付ファイル変換が解消されました。

コメント

このブログの人気の投稿

Tomcatの設定3:8080ポート以外で動作させる

IVS文字・サロゲートペア文字の注意

ナレッジベースを名前を変えてコピーする方法

GeneXusのオプション設定、起動時オプション

参照整合制約(外部キー制約)とGeneXus

Tomcatの設定5:メモリ調整と起動モード