actionmailerを介してメールを送信する場合、actionmailerは、問題がない場合、または問題が発生した場合に、SMTPサーバーから応答を受け取ります。メール送信後にこの応答を取得する方法はありますか?また、SMTPサーバーによってエラーがスローされない場合はどうなりますか?
qmailメールサーバーは、電子メールのトレースに使用するハンドラーIDをスローします。
例として、サーバーの応答は次のとおりです。
250 ok 1308235825 qp 17832
actionmailerを介してメールを送信する場合、actionmailerは、問題がない場合、または問題が発生した場合に、SMTPサーバーから応答を受け取ります。メール送信後にこの応答を取得する方法はありますか?また、SMTPサーバーによってエラーがスローされない場合はどうなりますか?
qmailメールサーバーは、電子メールのトレースに使用するハンドラーIDをスローします。
例として、サーバーの応答は次のとおりです。
250 ok 1308235825 qp 17832
return_response: true
smtp 設定で設定し、代わりmessage.deliver!
に呼び出しますdeliver
。Net::SMTP::Response
これは、探しているサーバー応答を含むSMTP サーバー応答 a を返します。
最終結果だけでなく、サーバーとの接続からのすべての応答のログが必要な場合は、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
したがって、初期化ファイルで次のようなコードを使用できます。
class MailObserver
def self.delivered_email(message)
logger_info "Sent Message: #{message}"
end
end
ActionMailer::Base.register_observer(MailObserver)
これにより、送信されたメールがログに記録され、送信されたメール オブジェクトからヘッダーまたは応答を取得できるかどうかを確認できます。