目次
1.発生した問題・エラー
2.解決に至るまで
3.原因
4.まとめ
しょうもないところでハマってしまったのでメモです。
結論から言うと、 開発環境でメール本文を確かめるときにはmailhogで全て確認するのではなく、実在するメールアドレスに送信して確かめよう、 という話です。
バージョン
・mailhog 1.0.1
発生した問題・エラー
開発環境で、メールが正しく送れているか、文面は正しいかの確認を行なった時に、mailhogで確認をしていました。
その際に、bladeファイルで改行を設定している箇所が、mailhogの表示では正しく反映されないことがありハマってしまいました。
問題となっているメールの本文は、「quoted-printable」でエンコードされています。
また、デコード前の本文は下記のようになっています。
ご不明点は「株式会社AAA カスタマーサポート」へお問い合わせください。
株式会社AAA カスタマーサポート
受付時間:10:00~19:00(年中無休)
お問い合わせください。
の後には改行があります。
このメールがmailhogの「quoted-printable」でエンコードされると
=E4=B8=8D=E6=98=8E=E7=82=B9=E3=81=AF=E3=80=8C=E6=A0=AA=E5=BC=8F=E4=BC=9A=
=E7=A4=BEAAA =E3=82=AB=E3=82=B9=E3=82=BF=E3=83=9E=E3=83=BC=E3=82=B5=
=E3=83=9D=E3=83=BC=E3=83=88=E3=80=8D=E3=81=B8=E3=81=8A=E5=95=8F=E3=81=84=
=E5=90=88=E3=82=8F=E3=81=9B=E3=81=8F=E3=81=A0=E3=81=95=E3=81=84=E3=80=82
=
=E6=A0=AA=E5=BC=8F=E4=BC=9A=E7=A4=BEAAA =E3=82=AB=E3=82=B9=E3=82=BF=
=E3=83=9E=E3=83=BC=E3=82=B5=E3=83=9D=E3=83=BC=E3=83=88
=E5=8F=97=E4=BB=
=98=E6=99=82=E9=96=93=EF=BC=9A10:00=EF=BD=9E19:00=EF=BC=88=E5=B9=B4=
=E4=B8=AD=E7=84=A1=E4=BC=91=EF=BC=89
となり、5行目に "=”1文字が付与されます。
mailhogでエンコードされた表示は下記のようになります。
お問い合わせください。
の後ろの改行が削除されて、sample.blade.phpと表示が違ってしまっています。
「quoted-printable」でエンコードされる場合は、エンコード後の文字列の長さを76文字以下にする必要があるため、"="が付与されます。
ですが、上記の場合、76文字に満たないため、"="は不要かとおもいますが、76文字未満にも関わらず、エンコード後に"="が付与されてしまいました。
※ヘッダ
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
charset=utf-8
解決に至るまで
検証をしてみました。
下記のデコードツールで、mailhogでエンコードされた結果を変換してみました。
すると、期待していた通りのsample.blade.phpと同じ表示になりました
<本文>
試しに、こちらでsample.blade.phpをデコードしてみました。
=E4=B8=8D=E6=98=8E=E7=82=B9=E3=81=AF=E3=80=8C=E6=A0=AA=E5=BC=8F=E4=BC=9A=
=E7=A4=BEAAA =E3=82=AB=E3=82=B9=E3=82=BF=E3=83=9E=E3=83=BC=E3=82=B5=
=E3=83=9D=E3=83=BC=E3=83=88=E3=80=8D=E3=81=B8=E3=81=8A=E5=95=8F=E3=81=84=
=E5=90=88=E3=82=8F=E3=81=9B=E3=81=8F=E3=81=A0=E3=81=95=E3=81=84=E3=80=82
=E6=A0=AA=E5=BC=8F=E4=BC=9A=E7=A4=BE=E3=83=91=E3=83=AB=E3=82=B3 =E3=82=AB=
=E3=82=B9=E3=82=BF=E3=83=9E=E3=83=BC=E3=82=B5=E3=83=9D=E3=83=BC=E3=83=88
=E5=8F=97=E4=BB=98=E6=99=82=E9=96=93=EF=BC=9A10:00=EF=BD=9E19:00=EF=BC=88=
=E5=B9=B4=E4=B8=AD=E7=84=A1=E4=BC=91=EF=BC=89
エンコード後
<本文>
期待していたものと同じになりました。
Gmailで確認
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
=E4=B8=8D=E6=98=8E=E7=82=B9=E3=81=AF=E3=80=8C=E6=A0=AA=E5=BC=8F=E4=BC=9A=
=E7=A4=BEAAA =E3=82=AB=E3=82=B9=E3=82=BF=E3=83=9E=E3=83=BC=E3=82=B5=
=E3=83=9D=E3=83=BC=E3=83=88=E3=80=8D=E3=81=B8=E3=81=8A=E5=95=8F=E3=81=84=
=E5=90=88=E3=82=8F=E3=81=9B=E3=81=8F=E3=81=A0=E3=81=95=E3=81=84=E3=80=82
=E6=A0=AA=E5=BC=8F=E4=BC=9A=E7=A4=BE=E3=83=91=E3=83=AB=E3=82=B3 =E3=82=AB=
=E3=82=B9=E3=82=BF=E3=83=9E=E3=83=BC=E3=82=B5=E3=83=9D=E3=83=BC=E3=83=88
=E5=8F=97=E4=BB=98=E6=99=82=E9=96=93=EF=BC=9A10:00=EF=BD=9E19:00=EF=BC=88=
=E5=B9=B4=E4=B8=AD=E7=84=A1=E4=BC=91=EF=BC=89
原因
mailhog で改行が消えて見えるのは、デコーダのバグorHTMLメールでの表示崩れが原因ではないかと思います。
また、試しに連続した改行を含んだ quoted-printable データを流し込んでみたところ、末尾の = の後に改行が複数個続くとまとめて打ち消されてしまうような表示になりました。
まとめ
冒頭でも書きましたが、mailhog での確認だけでなく、実在のメールアドレスに送って見た目を確認してみること。
同じような方がいらっしゃったら、少しでも役に立てれば幸いです。
参考にさせていただいた記事