Mar*_*ker 9 ruby-on-rails actionmailer qmail
当通过动作管理器发送邮件时,动作邮件程序会从SMTP服务器获取响应,当它正常或者错误时.有没有办法在发送邮件后检索此响应?当SMTP服务器没有抛出错误时?
我们的qmail邮件服务器会抛出一个我们想要用来跟踪电子邮件的处理程序ID.
例如,服务器响应如下:
250 ok 1308235825 qp 17832
设置return_response: true为smtp设置并调用message.deliver!而不是deliver.这将返回SMTP服务器响应a Net::SMTP::Response,其中包含您要查找的服务器响应.
如果您需要记录与服务器连接的所有响应,而不仅仅是最终结果,那么您需要深入了解Net :: SMTP.
查看源代码,您可以定义一个观察者:
# 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)
这将记录已发送的邮件,您可以查看是否可以从已发送的邮件对象获取标头或响应。
| 归档时间: |
|
| 查看次数: |
2458 次 |
| 最近记录: |