
在使用 WordPress 的 wp_mail() 发送纯文本邮件时,若用单引号包裹 会导致字面输出 \n;必须使用双引号或 PHP_EOL 才能实现真正的换行效果。
在使用 wordpress 的 `wp_mail()` 发送纯文本邮件时,若用单引号包裹 ` ` 会导致字面输出 `\n`;必须使用双引号或 `php_eol` 才能实现真正的换行效果。
在 PHP 中,字符串的换行符能否被正确解析,取决于所使用的引号类型:单引号(')会将
视为两个普通字符,而双引号(")则会将其解释为实际的换行控制符。这是初学者常踩的“陷阱”——看似语法无误,实则因引号误用导致邮件内容格式错乱。
以下代码演示了三种常见写法及其结果差异:
$first_value = "John"; $second_value = "Doe"; $third_value = "john@example.com"; // ❌ 错误:单引号导致 不被转义,输出为字面 " " $data_bad = "First: $first_value" . ' ' . "Second: $second_value" . ' ' . "Third: $third_value"; // 输出:First: John Second: Doe Third: john@example.com // ✅ 正确:双引号支持转义序列, 被解析为换行 $data_good = "First: $first_value" . " " . "Second: $second_value" . " " . "Third: $third_value"; // 输出(含真实换行): // First: John // Second: Doe // Third: john@example.com // ✅ 更推荐:使用 PHP_EOL(跨平台兼容) $data_eol = "First: $first_value" . PHP_EOL . "Second: $second_value" . PHP_EOL . "Third: $third_value"; // 在 Windows、Linux、macOS 上均生成对应系统换行符(CRLF/LF)
将 $data_eol 传入 wp_mail() 即可确保收件人看到清晰分段的纯文本内容:
wp_mail(
'admin@example.com',
'新表单提交通知',
$data_eol,
array('Content-Type: text/plain; charset=UTF-8')
);⚠️ 注意事项:
-
wp_mail()默认发送text/plain邮件,无需额外设置 Content-Type(但显式声明更稳妥); - 若后续需升级为 HTML 邮件,请改用
<br>标签并设置Content-Type: text/html; - 避免混用引号风格(如
"First: $val" . ' '),易引发不可见错误; - 使用
PHP_EOL是最佳实践,尤其在多环境部署(如本地开发用 macOS、生产用 Linux)时可避免换行不一致问题。
总结:换行不是“写出来就行”,而是要让 PHP 真正执行换行——选对引号、善用 PHP_EOL,才能让 text/plain 邮件既规范又专业。

















