【WordPress】wp_mail()で本文が改行されない
※本ページのリンクにはプロモーションが含まれています。
こんにちは、Ryohei(@ityryohei)です!
本記事では、WordPressのwp_mail()でメールを送信すると、本文の改行が反映されずに一行で表示されてしまう場合の対処法をご紹介しています。
wp_mail()で本文が改行されるようにしたいんだけど、どうすればいいんだろう?
上記の疑問にお答えします。
では、解説していきます。Content-type: text/htmlになっていると改行されない
wp_mail()ではオプションにメールのヘッダーを追加することができます。ヘッダーの中にはContent-typeと呼ばれるコンテンツの種類を表す情報があり、デフォルトのContent-typeはtext/plainとなっています。
text/plainはそのままコンテンツがテキストファイルであることを表します。テキストファイルなので改行等もそのまま本文に反映されますが、こちらの指定がtext/htmlにしていると、テキストファイルとは改行方法が異なるため、本文の改行されずに一行で送信されてしまいます。
HTML形式のメールを送る場合のContent-typeはtext/htmlで問題ないですが、テキストメールで本文を改行させたい場合は、Content-typeの指定を下記のようにしておく必要があります。
$headers = array('Content-Type: text/plain; charset=UTF-8');
上記はデフォルトのオプションのため省略しても問題ないですが、メールを送信するプラグイン等を導入している場合はどこかで別の設定が入っている可能性がありますので、wp_mail()の実行前に明示的にヘッダーを指定することで間違いが起こらないかと思います。
Content-type: text/plainの設定例
つらつらと説明してきましたが、文字だけでは伝わりにくいと思いますので、wp_mail()でヘッダーにContent-type: text/plainを設定した際の全体サンプルをご紹介します。参考にしていただければ幸いです。
//宛先
$to = 'xxxx@example.co.jp';
//件名
$subject = '送信テスト';
//本文
$body = <<<EOF
送信テスト
送信テス送信テスト
送信テスト
EOF;
//ヘッダーオプション
$headers = array('Content-Type: text/plain; charset=UTF-8');
//送信
wp_mail($to, $subject, $body, $headers);
最後に
WordPressでメールを送信する場合は公開されているプラグインをインストールして構築するのが一番早いですし、安全です。ただ、プログラム側でメールを送りたい場合はwp_mail()を使えば簡単に送信することができるので、裏側で使用するだけであったり、プログラミングに詳しい方は検討されてみても良いかもしれないですね。
以上、WordPressのwp_mail()で本文が改行されない場合の対処法のご紹介でした!