WordpressからSTMP経由でメール送りたいこと、よくあるよね。ある。そんなときに、WP Mail SMTPっていう便利なプラグインがあるんで、今回それを使ってSendgridからメールを送信してみることにした。
How to Set Up the SendGrid Mailer in WP Mail SMTP
そしたら猛烈な文字化け。よく調べてないけど、多分ISO-2022-JPをUTF-8で無理矢理読んだ系の化け方。困ってヘッダーとか読んだんだけど、Content-Type: text/plain; charset=us-ascii
とか書いてあって、「us-ascii…!?!?」と天を仰いだ。
Wordpressのメール送信系を司っておる「wp_mail()」には便利なフックがあって、
apply_filters( 'wp_mail_charset', function()
{
return 'UTF-8';
})
とかやると、文字コードを変えてくれる。
なんだけど、それやっても駄目。おそらくSendgrid上で書き換わってる。すげえ困る。
そんな時は、このページを良く読むんだ…。よく…読むんだ…。
SendGrid's WordPress Plugin | SendGrid Documentation
要は、**「Sendgridの公式Wordpressプラグインを使い給え」**ってことなんですけど、もう一点、「SMTP使いたければSwift Mailerを使え、プラグインは用意してある」というのも重要。このプラグインをダブルで有効にして、API Keyを登録すれば使える(API Keyはここから出力して。必要な権限は、「Mail Send」のみでOKなので、Full Permissionは不要)。
文字化けも見事に解消しました。
※ ちなみに、他にも文字化けの要因はあって、まだ解消しない人はこの辺りを確認してみて
※ Git使ってデプロイしてる人。Sendgridの公式プラグインは、Composerパッケージを思いっきり含んでるので、.gitignore
でvendor
を対象にしちゃってる人は要注意ね
※ 雑な推量で文字コードとか書いてるのは、文字化けで困ってるんだけど検索ワードがよくわからなくて迷ってる子羊用なので色々察して