teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2017/05/02 05:36

投稿

coba-coba
coba-coba

スコア1409

answer CHANGED
@@ -1,5 +1,6 @@
1
1
  PHPのヒアドキュメントを使ったらどうでしょう?
2
2
  同じ書き方でHTMLメールにも使えます。
3
+ HTMLメールを使う場合には、一例ですが、レイアウトファイルで```<?= nl2br($this->fetch('content')) ?>```を使って出力します。
3
4
  ```PHP
4
5
  <?php
5
6
  $name = "hoge";
@@ -14,4 +15,47 @@
14
15
  テストメール(3行目)
15
16
  EOT;
16
17
  ?>
17
- ```
18
+ ```
19
+
20
+ 追記
21
+ ---
22
+ 多分ですが、以下のPHPの仕様に引っかかっているのだと思います。
23
+ ```PHP
24
+ <?="a"?>
25
+ <?="b"?>
26
+
27
+ 出力:
28
+ ab
29
+ ```
30
+ ```PHP
31
+ <?="a"?>
32
+
33
+ <?="b"?>
34
+
35
+ 出力:
36
+ a
37
+ b
38
+ ```
39
+ ```PHP
40
+ 1<?="a"?>2
41
+ 3<?="b"?>4
42
+
43
+ 出力:
44
+ 1a2
45
+ 3b4
46
+ ```
47
+ ```PHP
48
+ 1
49
+ <?="a"?>
50
+ 2
51
+ 3<?="b"?>4
52
+
53
+ 出力:
54
+ 1
55
+ a2
56
+ 3b4
57
+ ```
58
+ watanabe9434さんのおっしゃる通り```<?= PHP_EOL ?>```を加えてもいいと思いますが、個人的にはヒアドキュメントでまとめてしまった方が楽で見やすいかなと。
59
+
60
+ ちなみにCakePHP3では、メールを送信するまでのメッセージ部分の処理では、改行コードを```\n```に置換して処理しています。
61
+ そして、メール送信時には、PHPのmail()を使う場合には```PHP_EOL```を、SMTPを使う場合は```"\r\n"```を使っています。