【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()で本文が改行されない場合の対処法のご紹介でした!