ec-cube
ec-cube copied to clipboard
メールが Quoted-printable だけど、Base64 の方が良くない? (再)
概要(Overview)
Q だと、設定している店名によってはエンコード後の文字列が非常に長くなり、MTA が From: を途中でぶった切るケースがあった。このパターンだと、リレー先の MTA によっては、拒否されることもある。 他にも、Name をオミットして、メールアドレスだけでリレーするケースもあった。
ただ、Swift_Mime_HeaderEncoder_QpHeaderEncoder はマルチバイトを適切に処理できない気がするので、一筋縄ではいかないかも。PHP の生関数で、簡単に処理できた気もしたけど、記憶違いかも。
環境 (environment)
- EC-CUBE: 4.0.3
- swiftmailer/swiftmailer は v6.3.0 に更新。
- PHP: 7.2.26
発生した経緯から MTA が切っていると思っていましたが、Swift の処理時点で切っている予感もしてきました。
// パターン1 長いと途中で (エンコード後256バイトで?) ぶった切る【悪質】
->setFrom(['[email protected]' => 'ながーーーーーーーーーーーーーーい店舗名'])
/*
配信されたヘッダー
From: =?utf-8?Q?=E3=81=AA=E3=81=8C=E3=83=BC=E3=83=BC?=
=?utf-8?Q?=E3=83=BC=E3=83=BC=E3=83=BC=E3=83=BC?=
=?utf-8?Q?=E3=83=BC=E3=83=BC=E3=83=BC=E3=83=BC?=
=?utf-8?Q?=E3=83=BC=E3=83=BC=E3=83=BC=E3=83=BC?=
=?utf-8?Q?=E3=81=84=E5=BA=97=E8=88=97=E5=90=8D?= <foo.ba
*/
// パターン2 もっと長いと Name がオミットされる
->setFrom(['[email protected]' => 'ながーーーーーーーーーーーーーーーーい店舗名'])
/*
配信されたヘッダー
From: <[email protected]>
*/
確か、From は SwiftMailer が切っていたと思います
SwiftMailer が deprecated になっているので、 https://symfony.com/blog/the-end-of-swiftmailer Symfony mailer の導入に倂せて検討すると良いかもしれませんね https://symfony.com/doc/current/mailer.html
現状では店舗名が固定で入るようになっているので、メール件名のフォーマット化など制御できる方法があってもよいかもしれませんね。