こんにちは!kossyです!
今回はActionMailerで送信するメールのHeaderの中身をコンソールから確認する方法について、
ブログに残してみたいと思います。
環境
Ruby 2.6.9
Rails 6.1.4
sendgrid
deliver_now を使う
Jobでメール送信をQueueする場合はdeliver_laterを使うのが一般的だと思いますが、
deliver_nowを使うと、JobではなくWebサーバー上で同期的にメールを送信することができます。
mail = SampleMailer.send_mail.deliver_now <Mail::Message:99301180, Multipart: false, Headers: <Date: Thu, 03 Feb 2022 18:01:39 +0900>, <From: sample <no-reply-qa@mail.sample.com>>, <To: ["samplestaff001@sample.co.jp", "samplestaff002@sample.co.jp"]>, <Bcc: ["sample.co.jp"]>, <Message-ID: <sample@ip-10-1-3-173.ap-northeast-1.compute.internal.mail>>, <Subject: 【sample】サンプルメールです。>, <Mime-Verscomn: 1.0>, <Content-Type: text/html>, <Content-Transfer-Encoding: quoted-printable>, <categories: www.sample.xyz, sample>, <send-at: 1643878898>, <custom-args: {:send_at=>1643878898, :environment=>"www.sample.xyz",:mailer=>"sample"}> >
Headersの部分がメール送信時のHeaderになります。
ちなみにdeliver_nowの返り値は Mail::Message オブジェクトになっているので、 headerメソッドのfield_summaryというメソッドが使えます。
field_summaryメソッドを使うと、Header部分をinspectした値を得られます。
mail.header.field_summary => "<Date: Thu, 03 Feb 2022 18:01:39 +0900>, <From: Sample <no-reply-sample@mail.sample.xyz>>, <To: [\"sample1@sample.co.jp\", \"sample2@sample.co.jp\"]>, <Bcc: [\"sample3@sample.co.jp\"]>, <Message-ID: <sample@ip-10-1-3-173.ap-northeast-1.compute.internal.mail>>, <Subject: 【sample】サンプルメールです。>, <Mime-Version: 1.0>, <Content-Type: text/html>, <Content-Transfer-Encoding: quoted-printable>, <categories: www.sample.xyz, sample>, <send-at: 1643878898>, <custom-args: {:send_at=>1643878898, :environment=>\"www.sample.xyz\", :mailer=>\"sample\"}>"
勉強になりました。