Ошибка пропуска в сводке чата

Электронные письма с кратким итогом чата пропускаются для пользователей с действительным адресом электронной почты:

image

Я провёл анализ и считаю, что знаю причину:

Вот место, где происходит пропуск:

Это происходит потому, что 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
2 лайка

Огромное спасибо за отладку, @merefield. Убедимся, что члены XP скоро посмотрят на это.

2 лайка

Я немного разобрался в этом, и если проследить цепочку, должно происходить обогащение данных:

Всё начинается с email-сервиса здесь, затем он вызывает расширение уведомлений пользователя, которое обогащает данные email-адресом пользователя здесь, после чего передаёт их в вспомогательный метод построения email здесь, и, наконец, устанавливает адрес в конструкторе сообщения здесь перед отправкой.

Помимо этого, сводный email чата уже работает на других сайтах, поэтому, скорее всего, проблема вызвана чем-то другим.

Я считаю, что временным решением будет передача email-адреса пользователя в задачу, что должно повысить нашу уверенность и прозрачность в том, что правильные данные присутствуют изначально:

3 лайка

Закрыть, так как мы не получили обратной связи по исправлению