4.6. メールが送信されない¶
4.6.1. IM-Workflow のメールが送信されない¶
対象バージョン¶
iWP / iAF の場合
- IM-Workflow 7.2.0 ~ 最新バージョン
intra-mart Accel Platform の場合
- 2012 Autumn(Alba) IM-Workflow 8.0.1 ~ 最新バージョン
条件¶
条件は以下の通りです。
- #1. IM-共通マスタのユーザのプロファイル情報の「メールアドレス1」が設定されてない(メール定義を使用している場合)
- #2. IM-共通マスタのユーザのプロファイル情報の「メールアドレス1」が設定されているが正しくない
- #3. SMTPサーバの設定が正しくない
- #4. ワークフローパラメータの「処理対象者標準プラグイン結果キャッシュ利用不可設定(not-use-standard-plugin-result-cache)」を”false”(キャッシュ化する:デフォルト)にしている
原因¶
本現象は不具合ではなく各設定に依存した振舞いです。原因は以下の通りです。
#1 について
IM-Workflow のメールは、IM-共通マスタのユーザのプロファイル情報の「メールアドレス1」が設定されてない場合は、送信しません。(メール定義を使用している場合)
#2 について
IM-Workflow のメールは、IM-共通マスタのユーザのプロファイル情報の「メールアドレス1」が設定されていても、メールアドレスが正しくない場合は、送信しません。#3 について
SMTPサーバの設定がない、または正しくない場合、 IM-Workflow に限らずメール送信されません。下記のような例外ログが出力されます。log.generating.time=Wed Jul 27 10:09:20 JST 2016 log.level=ERROR log.logger.name=jp.co.intra_mart.system.workflow.util.WorkflowMailUtil log.id=5iidq65c8dbg3 log.thread.id=resin-92 log.thread.group=main log.message=メール送信処理で失敗しました。 jp.co.intra_mart.foundation.mail.MailSenderException: Could not connect to SMTP host: localhost, port: 25 at jp.co.intra_mart.foundation.mail.javamail.JavaMailSender.send(JavaMailSender.java:83) at jp.co.intra_mart.system.workflow.util.WorkflowMailUtil.send(WorkflowMailUtil.java:192) at jp.co.intra_mart.system.workflow.util.WorkflowMailUtil.send(WorkflowMailUtil.java:226) at jp.co.intra_mart.system.workflow.engine.thread.task.TemplateMailSendTask.sendMail(TemplateMailSendTask.java:2420) at jp.co.intra_mart.system.workflow.engine.thread.task.TemplateMailSendTask.sendProcessMail(TemplateMailSendTask.java:2482) at jp.co.intra_mart.system.workflow.engine.thread.task.TemplateMailSendTask.execute(TemplateMailSendTask.java:455) at jp.co.intra_mart.system.workflow.engine.thread.WorkflowAsynchronousTask.executeChildTask(WorkflowAsynchronousTask.java:181) at jp.co.intra_mart.system.workflow.engine.thread.WorkflowAsynchronousTask.run(WorkflowAsynchronousTask.java:108) at jp.co.intra_mart.system.asynchronous.TaskWrapperImpl.run(TaskWrapperImpl.java:168) at jp.co.intra_mart.system.asynchronous.impl.executor.work.ExecutableWrapper.run(ExecutableWrapper.java:89) at com.caucho.jca.ra.WorkThread.run(WorkThread.java:87) at com.caucho.env.thread2.ResinThread2.runTasks(ResinThread2.java:173) at com.caucho.env.thread2.ResinThread2.run(ResinThread2.java:118) Caused by: javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25; nested exception is: java.net.SocketException: Permission denied: connect at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1391) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412) at javax.mail.Service.connect(Service.java:288) at javax.mail.Service.connect(Service.java:169) at javax.mail.Service.connect(Service.java:118) at javax.mail.Transport.send0(Transport.java:188) at javax.mail.Transport.send(Transport.java:118) at jp.co.intra_mart.foundation.mail.javamail.JavaMailSender.send(JavaMailSender.java:73) ... 12 more Caused by: java.net.SocketException: Permission denied: connect at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:233) at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189) at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1359) ... 19 more#4 について
「処理対象者標準プラグイン結果キャッシュ利用不可設定(not-use-standard-plugin-result-cache)」を”false”(キャッシュ化する:デフォルト)にしている場合、IM-共通マスタのユーザのプロファイル情報の「メールアドレス1」を取得した際、その値を IM-Workflow はキャッシュとして保持します。保持する期間や個数の設定は別途存在します。ちなみにそれらの設定は、「対象のキャッシュ情報にアクセスされることなく一定期間が過ぎたら削除する」や「保持する数が一定量を超えたら削除する」というものです。上記の設定のもと、IM-共通マスタのユーザのプロファイル情報の「メールアドレス1」がキャッシュとして保持され続けた状態で、IM-共通マスタのユーザのプロファイル情報の「メールアドレス1」を変更したとしても、IM-Workflow のメール送信時にはキャッシュとして保持している古いメールアドレスを使用するため、メールが送信されない場合があります。
解決方法¶
ありません。
回避方法¶
各原因に対する回避方法は以下の通りです。
#1 について
IM-共通マスタのユーザのプロファイル情報のメールアドレス1にメールアドレスを設定してください。#2 について
IM-共通マスタのユーザのプロファイル情報のメールアドレス1に有効なメールアドレスを設定してください。#3 について
SMTPサーバの設定に正しい情報を設定してください。#4 について
「処理対象者標準プラグイン結果キャッシュ削除」バッチ・ジョブを実行してください。コラム
「処理対象者標準プラグイン結果キャッシュ削除」バッチ・ジョブは、以下のパッチ・アップデートで追加された機能です。
iWP / iAF の場合
- IM-Workflow 7.2.8
intra-mart Accel Platform の場合
- 2013 Summer(Damask) IM-Workflow 8.0.4
4.6.2. メール定義のヘッダ情報を多言語対応できない¶
対象バージョン¶
iWP / iAF の場合
- IM-Workflow 7.2.0 ~ 最新バージョン
intra-mart Accel Platform の場合
- 2012 Autumn(Alba) IM-Workflow 8.0.1 ~ 最新バージョン
現象¶
メール定義での「件名」を除くヘッダ情報は、メール定義画面からではロケール別の設定を行うことができません。メール定義を多言語に対応させるために、ストレージの以下のメール定義テンプレートファイルを直接編集しました。
iWP / iAF の場合
[%Storage Service%]/workflow/data/[%ログイングループID%]/master/mail/ 配下のファイルintra-mart Accel Platform の場合
[%PUBLIC_STORAGE_PATH%]/im_workflow/data/[%テナントID%]/master/mail/ 配下のファイルこの状態で、メール定義画面でメール定義を更新すると、画面に表示されたヘッダ情報ですべてのロケール分のメール定義テンプレートが更新されてしまいます。
4.6.3. メールの中国語が文字化けする¶
対象バージョン¶
iWP / iAF の場合
- IM-Workflow 7.2.0 ~ 最新バージョン
intra-mart Accel Platform の場合
- 2012 Autumn(Alba) IM-Workflow 8.0.1 ~ 最新バージョン
現象¶
処理依頼などのメールにおいて、タイトルや本文に中国語が含まれる場合に中国語が文字化けします。コラム
当トラブルは「中国語」を例として記載をしていますが、そのほかの言語の文字化けについても当トラブルの解決方法が適用可能です。
原因¶
製品の仕様です。ワークフローのメール送信処理における文字コードは、到達したノードの処理対象者ではなく、前のノードの申請者・処理者のロケールに応じて決定されます。(メール送信の起点となる処理を行ったユーザのロケールに応じて決定されます。)ロケールに対応する文字コードは、設定ファイルによって定義されます。
iWP / iAF の場合
- <%im_path%>/conf/mail/encode_%ロケールID%.properties
intra-mart Accel Platform の場合
- %CONTEXT_PATH%/WEB-INF/conf/javamail-config/javamail-config_%ロケールID%.xml
コラム
2019 Spring(Violette) より前のバージョンでは、日本語(”ja” および “ja_JP”)ロケールに対応する文字コードは、 “iso-2022-jp” です。“iso-2022-jp” は中国語には対応していません。なお、 2019 Spring(Violette) 以降のバージョンでは、日本語(”ja” および “ja_JP”)ロケールに対応する文字コードは、デフォルトで “UTF-8” です。日本語ロケールのユーザが申請や承認を行った際に送信されるメールに中国語が含まれており、かつ上記の設定ファイルで指定された文字コードが中国語に対応していない場合、文字化けが発生します。
解決方法¶
以下のドキュメントを参照し、文字コード設定を “UTF-8” に変更してください。
iWP / iAF の場合
「Service Platform 設定ガイド」-「4.4.2 conf/mail/encode.properties」
intra-mart Accel Platform の場合
「設定ファイルリファレンス」-「メール設定」
注意
上記のとおり設定を変更しても、UTF-8 で扱えない文字がメールに含まれる場合は文字化けが発生します。そのような文字を扱う必要がある場合は、お客様の運用に合わせて任意の文字コードを設定してください。