チャット要約メールが有効なメールアドレスを持つユーザーでスキップされています。

分析を行った結果、その理由がわかりました。
スキップが発生する最終的な場所は以下の通りです。
これは message.to が空白であるためです。
message.to が空白なのは、send_user_email に渡される引数に to_address が含まれておらず、ユーザーのプライマリメールでエンリッチされないためです。例:
args: {"type"=>"chat_summary", "user_id"=>3, "force_respect_seen_recently"=>true, "current_site_id"=>"default"}
これは Chat Mailer によって呼び出され、to_address が欠落していることがわかります。
これは問題ないかもしれませんが、send_user_email の先頭に到達するまでに、to_address がユーザーメールでエンリッチされているべきだと考えられます。これにより、渡されたときに、メーラーがこのプロパティにアクセスできるようになり、メール送信が成功します。
send_user_email にこの小さなモンキーパッチを追加したところ、問題は解消されました。
# CORE BUG: to_address を設定しないと、最終的にメールが送信されずスキップされます。
# これはコアバグであり、Meta で報告する必要があります。
if args[:to_address].blank? && user&.primary_email&.email
args[:to_address] = user&.primary_email&.email
end
「いいね!」 2
sam
(Sam Saffron)
2
デバッグありがとうございます @merefield さん。メンバーのXPがすぐに確認するようにします。
「いいね!」 2
davidb
(David B)
7
これを少し調べてみたのですが、たどっていくとエンリッチメントがあるはずです。
メール送信者から始まり ここ 、次に ユーザー通知拡張を呼び出し 、ここで ユーザーメールでエンリッチし、次にメールビルドヘルパーに渡します ここ 、そして最後に送信する前にメッセージビルダーでアドレスを設定します ここ 。
それ以外にも、チャット要約メールは他のサイトで既に機能しているため、ここでの問題の原因はおそらく他にあるでしょう。
一時的な解決策として、ジョブにユーザーメールを渡すことで、最初から正しいデータがあることへの信頼性/可視性が少し高まると思います。
「いいね!」 3
j.jaffeux
(Joffrey Jaffeux)
クローズされました:
8
修正に関するフィードバックがなかったため、クローズします。