Как проверить, успешно ли отправлено письмо с помощью ActionMailer? - PullRequest
0 голосов
/ 15 ноября 2010

Я использую ActionMailer в Rails 3 для отправки периодических электронных писем.Мне нужно знать, было ли письмо отправлено правильно (насколько это возможно).

  @lists.each do |list|
    email = Reminder.deadline_reminder(list)
    email.deliver
  end

Есть ли свойство объекта электронной почты (класс Mail :: message из библиотеки Mail), которое сообщит мне, была ли отправка отправлена ​​правильно (без проблем с соединением, проблем с аутентификацией и т. Д.)?Я просмотрел классы на Github, но ничего не смог понять.

1 Ответ

4 голосов
/ 15 ноября 2010

Все зависит от того, что вы считаете успешным.

Вы можете проверить, отправил ли ваш код сообщение. Вы можете часто проверять журнал, чтобы увидеть, получил ли его узел пересылки почты и переместил ли он к месту назначения.

Но, только проприетарные почтовые системы поддерживают доставку-квитанцию. SMTP не делает и, вероятно, никогда не будет из-за проблем с конфиденциальностью и неспособности поставщиков почтовых клиентов договориться о том, как это сделать. Таким образом, даже если он доставлен до места назначения, невозможно узнать, прочитал ли его человек.

Лучше всего добавить в сообщение ссылку, по которой пользователь щелкает, и это перенаправит приложение на сервер с токеном, уникальным для этого сообщения. Когда приложение видит токен, оно устанавливает флаг, сообщая, что оно получило сообщение И, по крайней мере, прочитало часть о нажатии на ссылку. Затем, если должен быть ответ в течение заданного времени, вы также отслеживаете, когда сообщение было отправлено, и увеличиваете его, если токен не был получен обратно в течение срока.

...