正文

时间:2016-06-28 14:43:52

标签: php

我遇到了一个奇怪的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,如果它与正在发生的事情有关。

1 个答案:

答案 0 :(得分:0)

我弄清楚它是什么。或者更确切地说,其他人想出它是什么。这是一个问题,Outlook自动从明文电子邮件中删除“额外”换行符。我在this问题上找到了答案,40个字符/空格问题也是我遇到的确切行为。

作为修复,我决定只发送HTML邮件,因为我猜<br>标签更容易使用。