Actionmailer SMTP服务器响应

Mar*_*ker 9 ruby-on-rails actionmailer qmail

当通过动作管理器发送邮件时,动作邮件程序会从SMTP服务器获取响应,当它正常或者错误时.有没有办法在发送邮件后检索此响应?当SMTP服务器没有抛出错误时?

我们的qmail邮件服务器会抛出一个我们想要用来跟踪电子邮件的处理程序ID.

例如,服务器响应如下:

250 ok 1308235825 qp​​ 17832

tri*_*bes 8

设置return_response: true为smtp设置并调用message.deliver!而不是deliver.这将返回SMTP服务器响应a Net::SMTP::Response,其中包含您要查找的服务器响应.

如果您需要记录与服务器连接的所有响应,而不仅仅是最终结果,那么您需要深入了解Net :: SMTP.


Dev*_*n M 2

查看源代码,您可以定义一个观察者:

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
Run Code Online (Sandbox Code Playgroud)

因此,您可以在初始化文件中使用如下代码:

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

ActionMailer::Base.register_observer(MailObserver)
Run Code Online (Sandbox Code Playgroud)

这将记录已发送的邮件,您可以查看是否可以从已发送的邮件对象获取标头或响应。