Bug(バグ) #1576
完了メールアドレス認証で招待無し登録時の通知メールで本文が英語になっている
100%
説明
現象¶
招待無しでメールアドレス認証により会員登録できるようにした場合に、メールアドレスとCAPTCHAを入力する画面で入力完了後、OpenPNEから送信されてくる本登録用URLが記載されたメールの本文部分が英語になっている。
署名部分のみ日本語になっている。
回避方法¶
メールの内容を日本語に限定するのであれば、以下のファイルの内容を直接日本語に書き換えることで暫定対処可能。
- (project)/plugins/opAuthMailAddressPlugin/templates/mail/mobile/_notifyRegisterURL.php
- (project)/plugins/opAuthMailAddressPlugin/templates/mail/pc/_notifyRegisterURL.php
期待する動作¶
- 日本語インターフェイスでフォームを送信したユーザーには、すべて日本語で表記されたメールが届く。
再現したサーバー環境¶
- Windows 7 64bit + XAMPPの環境
- Ubuntu 10.04上のApache環境
再現するOpenPNEのバージョン¶
- OpenPNE 3.6 beta4
原因の推察¶
- このメールテンプレートの英語文章に対するi18n翻訳ファイルがない?
- 会員からの招待メール送信など、現状のコアの処理とは別のロジックが使われている(ようだ)
Kousuke Ebihara さんが14年以上前に更新
- 優先度 を Normal(通常) から High(高め) に変更
- 対象バージョン を OpenPNE 3.6beta6 にセット
Hidenori Goto さんが約14年前に更新
間違ってバックポートの方へコメントしてしまっていたので、こちらへコメントし直します。
コアの招待メール関連機能に合わせるために、opAuthMailAddressPluginのlib/form/opRequestRegisterURLForm.class.phpの以下の部分を修正するのがよいかと思われます。
134行目
opMailSend::sendTemplateMail('notifyRegisterURL', $address, opConfig::get('admin_mail_address'), $params); ↓ opMailSend::sendTemplateMail('requestRegisterURL', $address, opConfig::get('admin_mail_address'), $params);
この修正により、opAuthMailAddressPluginで保持しているテンプレートではなく、コア側で保持している招待メールのテンプレートを利用するようになります。
また、以下のチケットも関連して修正する必要があると思われます。
Kousuke Ebihara さんが約14年前に更新
opAuthMailAddressPlugin で http://github.com/ebihara/opAuthMailAddressPlugin/commit/34d1a6fa643fec419be74174420b2d7402402548 の変更をした際に、翻訳ファイルを更新していなかったのが原因のようです。
opAuthMailAddressPlugin のバグとして扱います。引き続き優先度は高めで対応します。
Kousuke Ebihara さんが約14年前に更新
- プロジェクト を OpenPNE 3 から opAuthMailAddressPlugin に変更
- 対象バージョン を削除 (
OpenPNE 3.7.0)
Hidenori Goto さんが約14年前に更新
こちらの問題の対処方法についてですが、「コアのテンプレートを利用する」という修正方法を #5 にて提案させて頂いていますが、それとは別途、「メールテンプレートをPHPテンプレートではなく、YAMLテンプレートに変更する」ということも合わせて提案させて頂きます。(そうした上で英語にも対応する)
YAMLテンプレートにしておけば、管理画面のメールテンプレート編集の一覧に表示され、管理者がこのテンプレートをカスタマイズできるようになると思います。
Kousuke Ebihara さんが約14年前に更新
Hidenori Goto は書きました:
こちらの問題の対処方法についてですが、「コアのテンプレートを利用する」という修正方法を #5 にて提案させて頂いていますが、それとは別途、「メールテンプレートをPHPテンプレートではなく、YAMLテンプレートに変更する」ということも合わせて提案させて頂きます。(そうした上で英語にも対応する)
YAMLテンプレートにしておけば、管理画面のメールテンプレート編集の一覧に表示され、管理者がこのテンプレートをカスタマイズできるようになると思います。
- コアのテンプレートを利用するという対応はおこなわないことにします。なぜなら、コアのテンプレートで案内される member/register はあくまで招待専用の URL であり、直接登録用の URL に遷移させる opAuthMailAddresPlugin で利用するには好ましいものではないからです。となれば、招待用のメールの機能を柔軟にして、 opAuthMailAddressPlugin 側でメールテンプレートを用意しなくても済むような変更を加えるということになると思いますが、そうなってくるとこのチケットで扱うべき範囲を超えてしまいます。今回のバグは、あくまで http://github.com/ebihara/opAuthMailAddressPlugin/commit/34d1a6fa643fec419be74174420b2d7402402548 にてコアの招待機能と opAuthMailAddressPlugin の新規登録機能を分離した際に翻訳ファイルの更新が漏れていたというのが原因ですので、その対処のみにとどめることにします。
- 提案されている YAML の設定ファイルに記述する方式に変更するのが正しいアプローチですが、これも、このチケットで扱うべき範囲を超えてしまうと考えています。このチケットではおこなうのはあくまでもバグ修正のみとし、リスクの大きい変更は避けたいです。といっても、当然、 YAML の設定ファイルに記述する方式への変更は、次のバージョンでおこなうべきです。
Kousuke Ebihara さんが約14年前に更新
- ステータス を Accepted(着手) から Fixed(完了) に変更
- 対象バージョン を 1.3.2 にセット
- 進捗率 を 0 から 100 に変更
Hidenori Goto さんが約14年前に更新
本チケットでの対応方法について理解しました。
本体での対応等、別途ご検討ください。
また、http://github.com/ebihara/opAuthMailAddressPlugin/commit/2cb9586ef6a3f0ff2de786cf6e067670d341b4ca を直接手元(3.7.0-dev)のファイルに適用したところ、問題が修正されることも確認しました。