【2021/9/18】登録不要の見積書作成ツール
「SPEEC」を公開しました!

【WordPress】wp_mail()で本文が改行されない

こんにちは、ryohei(@ityryohei)です!

本記事では、WordPressのwp_mail()でメールを送信すると、本文の改行が反映されずに一行で表示されてしまう場合の対処法をご紹介しています。

wp_mail()で本文が改行されるようにしたいんだけど、どうすればいいんだろう?

上記の疑問にお答えします。

では、解説していきます。

Content-type: text/htmlになっていると改行されない

wp_mail()ではオプションにメールのヘッダーを追加することができます。ヘッダーの中にはContent-typeと呼ばれるコンテンツの種類を表す情報があり、デフォルトのContent-typetext/plainとなっています。

参考URL:https://developer.wordpress.org/reference/functions/wp_mail/

text/plainはそのままコンテンツがテキストファイルであることを表します。テキストファイルなので改行等もそのまま本文に反映されますが、こちらの指定がtext/htmlにしていると、テキストファイルとは改行方法が異なるため、本文の改行されずに一行で送信されてしまいます。

HTML形式のメールを送る場合のContent-typetext/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()で本文が改行されない場合の対処法のご紹介でした!

短期間でプログラミングを習得してエンジニアになろう!

エンジニアに転職を考えている方、独学で勉強中の方必見!CodeCampなら自宅にいながら実務経験があるエンジニアからマンツーマンで指導してもらうことができます。実践的なスキルを習得して一日でも早いエンジニアデビューを目指しましょう。まずは無料体験から!

CodeCamp 公式サイトへ

おすすめの書籍