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

Adobe Creative Cloudを通常価格で購入していませんか?

Adobe Creative Cloud(Adobe CC)はAdobe社が提供するクリエイター向けのサービスです。WEB制作の幅を広げる「Photoshop・Illustrator・XD」Youtuberや動画クリエイターの編集作業に欠かせない「Premiere Pro・After Effects」など全20以上のアプリが提供されており、幅広いプランが用意されています。

コンプリートプランはAdobe CCの全20以上のアプリが使用できるプランです。多くのアプリが使用できるため定価で購入すると年間7万円以上するプランですが、デジタルハリウッドのAdobeマスター講座では「基礎動画教材+Adobe CC コンプリートプラン(12ヵ月)」がセットになって39,980円(税込)で利用できます。定価より安価にAdobe Creative Cloudのライセンスを購入でき、以降のライセンス更新も可能。動画教材で基礎スキルを習得できるので、入門する方にも便利な講座です。詳しくは下記のリンクからチェックしてみてくださいね。

Adobeマスター講座はこちら

おすすめの書籍