Actionmailer SMTP服务器响应

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

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

例如,服务器响应如下:

250 ok 1308235825 qp​​ 17832

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

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

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

在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 constantized. def register_observer(observer) delivery_observer = (observer.is_a?(String) ? observer.constantize : observer) Mail.register_observer(delivery_observer) end 

所以你可以在初始化文件中使用这样的代码:

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

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

Interesting Posts