intra-mart IM-Workflow トラブルシューティング 第21版 2023-04-01

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 ~ 最新バージョン

現象

処理依頼メールや代理依頼メールなどの IM-Workflow のメールが送信されない場合があります。

条件

条件は以下の通りです。

  • #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/ 配下のファイル
    
この状態で、メール定義画面でメール定義を更新すると、画面に表示されたヘッダ情報ですべてのロケール分のメール定義テンプレートが更新されてしまいます。

条件

  • 複数言語で運用している場合
  • IM-Workflow 画面を介さず、ストレージに格納されているメール定義テンプレートを直接編集している場合

原因

製品の仕様です。
現状、メール定義のヘッダ情報は、「件名」を除き、多言語対象外の項目です。
多言語対象外のヘッダ情報は以下の通りです。
  • From
  • To
  • Cc
  • Bcc
  • Reply-to

コラム

「From」は、 iWP / iAF IM-Workflow の場合はパッチ 7.2.8 以降で追加されました。

なお、各ロケールで異なるヘッダ情報を設定している状態でメール定義画面を表示した場合、どのロケールの設定値が初期表示されるかは明確な仕様はありません。

解決方法

ありません。

回避方法

メール定義テンプレートを直接編集した後、メール定義画面での編集を行わないことで設定が保持されます。

注意

弊社製品にて動作を保障している方法ではないため、実施する場合は、十分に動作確認を行っていただきますようお願い致します。

復旧方法

ありません。

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” に変更してください。

注意

上記のとおり設定を変更しても、UTF-8 で扱えない文字がメールに含まれる場合は文字化けが発生します。
そのような文字を扱う必要がある場合は、お客様の運用に合わせて任意の文字コードを設定してください。

回避方法

ありません。

復旧方法

ありません。