Actionmailer SMTP-сервер Ответ - PullRequest
8 голосов
/ 16 июня 2011

При отправке почты через actionmailer, actionmailer получает ответ от SMTP-сервера, когда он в порядке или когда он неправильный. Есть ли способ получить этот ответ после отправки почты? Также, когда SMTP-сервер не генерирует никаких ошибок?

Наш почтовый сервер qmail выдает идентификатор обработчика, который мы хотим использовать для отслеживания электронной почты.

Например, ответ сервера:

250 ок 1308235825 кв 17832

Ответы [ 2 ]

7 голосов
/ 02 марта 2013

Установите return_response: true в настройках smtp и наберите message.deliver! вместо deliver.Это возвращает ответ SMTP-сервера, Net::SMTP::Response, который содержит ответ сервера, который вы ищете.

Если вам нужен журнал всех ответов от соединения с сервером, а не только конечный результат, вам нужно покопаться в Net :: SMTP.

2 голосов
/ 16 июня 2011

Глядя на источник, вы можете определить наблюдателя:

в base.rb

  # Register an Observer which will be notified when mail is delivered.
  # Either a class or a string can be passed in as the Observer. If a string is passed in
  # it will be <tt>constantize</tt>d.
  def register_observer(observer)
    delivery_observer = (observer.is_a?(String) ? observer.constantize : observer)
    Mail.register_observer(delivery_observer)
  end

Таким образом, вы можете использовать такой код в инициализацииfile:

class MailObserver
  def self.delivered_email(message)
    logger_info "Sent Message: #{message}"
  end
end

ActionMailer::Base.register_observer(MailObserver)

Это будет регистрировать отправленную почту, и вы можете увидеть, можете ли вы получить заголовки или ответ от отправленного почтового объекта.

...