【问题标题】:PHP mail linebreak problems with ternary operator in body正文中三元运算符的PHP邮件换行问题
【发布时间】:2016-06-28 14:43:51
【问题描述】:

我在使用 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 ),并且我尝试在标题字符串中设置Content-Type: text/plain;。它仅在我完全删除三元运算符时才有效。如果这与正在发生的事情有任何关系,我正在使用 PHP 5.5.36。

【问题讨论】:

  • @JoseManuelAbarcaRodríguez 我也试过那个,但我忘了提。
  • @JoseManuelAbarcaRodríguez 不。这条线还没有断。
  • phpfiddle.org 中试试你的代码,它对我有用,所以,就是你。
  • 为什么不用双引号将整个字符串块包裹起来,而不是用单引号和双引号连接字符串,这只是为了混淆。当您知道双引号用于字符串内容的某些方面时,为什么还要使用单引号?

标签: php


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-05-20
    • 2011-10-24
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多