回答編集履歴

1 追記

coba-coba

coba-coba score 1348

2017/05/02 14:36  投稿

PHPのヒアドキュメントを使ったらどうでしょう?
同じ書き方でHTMLメールにも使えます。
HTMLメールを使う場合には、一例ですが、レイアウトファイルで```<?= nl2br($this->fetch('content')) ?>```を使って出力します。  
```PHP
<?php
$name = "hoge";
echo <<<EOT
{$name} 様
テストメール(1行目)
テストメール(2行目)
テストメール(3行目)
EOT;
?>
```
```
追記
---
多分ですが、以下のPHPの仕様に引っかかっているのだと思います。
```PHP
<?="a"?>
<?="b"?>
出力:
ab
```
```PHP
<?="a"?>
<?="b"?>
出力:
a
b
```
```PHP
1<?="a"?>2
3<?="b"?>4
出力:
1a2
3b4
```
```PHP
1
<?="a"?>
2
3<?="b"?>4
出力:
1
a2
3b4
```
watanabe9434さんのおっしゃる通り```<?= PHP_EOL ?>```を加えてもいいと思いますが、個人的にはヒアドキュメントでまとめてしまった方が楽で見やすいかなと。
ちなみにCakePHP3では、メールを送信するまでのメッセージ部分の処理では、改行コードを```\n```に置換して処理しています。
そして、メール送信時には、PHPのmail()を使う場合には```PHP_EOL```を、SMTPを使う場合は```"\r\n"```を使っています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る