メールアドレス変更確認リンクがエラーにつながる

こんにちは、
フォーラムのアカウントで、登録メールアドレスを変更したいと考えています。
確認リンクを受け取りました:

リンクを開いて「確認」ボタンをクリックすると、エラー500が発生します:

おっと
このディスカッションフォーラムを動かしているソフトウェアで予期せぬ問題が発生しました。ご迷惑をおかけして申し訳ありません。

エラーに関する詳細情報はログに記録され、自動的に通知が生成されました。確認いたします。

それ以上の操作は不要です。ただし、エラーが継続する場合は、エラーを再現する手順などを含めた追加情報を、サイトのフィードバックカテゴリにトピックを投稿して提供してください。

ログには以下のように表示されています:
NoMethodError (undefined method `update!' for nil:NilClass) lib/email_updater.rb:119:in `update_user_email' lib/email_updater.rb:105:in `block in confirm' lib/email_updater.rb:80:in `confirm' app/cont

何か心当たりはありますか?

私も同じ問題に遭遇しましたが、あなたが説明しているようなエラーがログに表示されていません。

私はサイトの管理者なので、テストアカウントで試して、何か違いがあるか確認してみます。

私の場合、'新しいメールアドレスの確認’テンプレートがどこかで更新されていないようです。壊れたサイトで送信される URL は以下の通りです:

%{base_url}/u/authorize-email/%{email_token}

新規インストール時のテンプレート内の URL は以下の通りです:

%{base_url}/u/confirm-new-email/%{email_token}

(壊れた)サイトではテキストが変更されていますが、おそらく過去 7 年間にどこかで更新されていないカスタムテンプレートなのでしょう :slight_smile:

プライマリメールアドレスを変更してから問題が発生しました。変更後、しばらくは正常に機能していました。私はフォーラムの設立時に使用していた元のメールアドレスを現在も使用していますが、投稿やトピックの通知を受け取るために変更したメールアドレスは数ヶ月間機能した後、突然何も届かなくなりました。プロフィールを確認すると、設定に管理者用メールアドレスが表示されていました。通知用メールアドレスに戻して変更したところ、「確認メールを送信しました」というメッセージが表示されましたが、メールは一向に届きません。何度か試してみましたが、メールが送信されたという通知は表示されるものの、実際にはメールは届きません。さらに、これをセカンダリメールアドレスとして設定しようと試みましたが、これも機能していません。

Discourse を通じて機能していないメールアドレスは有効なアドレスであり、他の 3 つの Discourse フォーラムからはメールを受信できています。アカウント設定を確認すると、そのアドレスは「未確認 - 確認メールを再送信」と表示されています。現在、最後の 2 回の試みが表示されており、それ以前に約 12 回試したがすべてキャンセルしていました。

あなたが書いた内容が理解できません。あなたは管理者で、自分自身でプライマリメールアドレスを変更したのですか?

私は管理者です。フォーラムをアクティブ化する際に使用したメインのメールアドレスはそのまま維持しています。しかし、セカンダリメールアドレスを設定しようとすると失敗します。また、ユーザー設定でメールアドレスを変更しようとしても失敗します。ダッシュボードには、期待通り管理者としてサインインしたメールアドレスが表示されています。月次領収書はセカンダリメールアドレスに届いています。

しばらくの間、セカンダリメールアドレスに通知が届いていましたが、突然届かなくなりました。設定を確認すると、現在は「未検証」と表示されています。検証用メールの再送を何度行っても、受信できません。

@codinghorror さん、こんにちは。
私はバージョン 2.8 ベータを使用しており、確認メールのリンクで同じ問題が発生しています。リンクをクリックするとエラーページにリダイレクトされ、URL が「url8800…」で始まります。

ただし、メッセージ本文に表示されているリンクをコピーしてブラウザに貼り付けると、正常に動作します。

何かご提案はありますでしょうか?

メール本文をカスタマイズしましたか?もしそうであれば、メール本文をデフォルト設定にリセットしてみてください。

問題が解決したと思います。