9

actionmailerを介してメールを送信する場合、actionmailerは、問題がない場合、または問題が発生した場合に、SMTPサーバーから応答を受け取ります。メール送信後にこの応答を取得する方法はありますか?また、SMTPサーバーによってエラーがスローされない場合はどうなりますか?

qmailメールサーバーは、電子メールのトレースに使用するハンドラーIDをスローします。

例として、サーバーの応答は次のとおりです。

250 ok 1308235825 qp​​ 17832

4

2 に答える 2

8

return_response: truesmtp 設定で設定し、代わりmessage.deliver!に呼び出しますdeliverNet::SMTP::Responseこれは、探しているサーバー応答を含むSMTP サーバー応答 a を返します。

最終結果だけでなく、サーバーとの接続からのすべての応答のログが必要な場合は、Net::SMTP を掘り下げる必要があります。

于 2013-03-02T10:37:10.973 に答える
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

したがって、初期化ファイルで次のようなコードを使用できます。

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

ActionMailer::Base.register_observer(MailObserver)

これにより、送信されたメールがログに記録され、送信されたメール オブジェクトからヘッダーまたは応答を取得できるかどうかを確認できます。

于 2011-06-16T16:16:02.463 に答える