我遇到了一个奇怪的PHP邮件功能问题,我无法弄清楚。电子邮件正文中的每一行用一行或两行分隔,但如果我在其中一行上使用三元运算符,则该行不会中断。代码看起来像这样:
$body = 'This line breaks properly' . "\r\n" .
'This line also breaks properly' . "\r\n" .
'This one as well' . "\r\n\r\n" .
'This line ' . ( $value == true ? 'breaks' : 'does not break' ) . ' properly' . "\r\n" .
'This one works fine' . "\r\n" .
'New line again';
mail( 'me@example.com', 'Test Email', $body, $headers );
我得到的输出是:
This line breaks properly
This line also breaks properly
This one as well
This line does not break properly This one works fine
New line again
我已经进行了双倍和三倍检查,以确保我在每个\r\n
周围加上双引号,我在三元组内尝试了( $value == true )
,并且我已尝试设置{{1}在标题字符串中。它只在我完全删除三元运算符时才有效。我使用的是PHP 5.5.36,如果它与正在发生的事情有关。
答案 0 :(得分:0)
我弄清楚它是什么。或者更确切地说,其他人想出它是什么。这是一个问题,Outlook自动从明文电子邮件中删除“额外”换行符。我在this问题上找到了答案,40个字符/空格问题也是我遇到的确切行为。
作为修复,我决定只发送HTML邮件,因为我猜<br>
标签更容易使用。