Электронные письма с кратким итогом чата пропускаются для пользователей с действительным адресом электронной почты:
![]()
Я провёл анализ и считаю, что знаю причину:
Вот место, где происходит пропуск:
Это происходит потому, что 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 должно быть дополнено адресом электронной почты пользователя, чтобы при передаче дальше почтовый агент имел доступ к этому свойству, и отправка письма успешно выполнялась.
Когда я добавил этот небольшой патч (monkey-patch) в 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