ActionMailerでHeaderの中身を確認したい

こんにちは!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というメソッドが使えます。

github.com

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\"}>"

勉強になりました。