【问题标题】:php - trouble getting /r/n to be a <br> in email messagephp - 无法让 /r/n 成为电子邮件消息中的 <br>
【发布时间】:2015-09-04 10:44:44
【问题描述】:

我有一个网络表单,允许用户输入文本,然后使用 swift mail 发送电子邮件。他们输入的文本可能包含\r\n。我从 swift mail 以 text/html 格式发送电子邮件。在发送电子邮件之前,我尝试对 \r\n 进行替换,并对用户输入的文本执行 nl2br 函数,以便将所有出现的 \r\n 更改为
;然而在所有情况下,电子邮件仍然会在文本消息中显示 \r\n,而不是实际的换行符。

下面是用于准备文本和电子邮件代码的代码 sn-p。

/* replace all cr/lf with a <br> */
$ind_msg = nl2br($ind_msg);

/* send the email message */
$status = send_email($db, $ind_email, $ind_name, $sender, $sender_name, $msg_subj, $ind_msg, "");

电子邮件代码

/* create the message */
$message = Swift_Message::newInstance();
$message->setTo(array($recipient => $recipient_name));
$message->setSubject($msg_subject);
$message->setContentType("text/html; charset=UTF-8");
$message->setBody($msg_body);
$message->setFrom(array($sender => $sender_name));

我错过了什么或做错了什么?

【问题讨论】:

  • 你错了nl2br()。它不会替换新行。它在它们之后添加 html 换行符。
  • 你能把可能的输入和预期的输出一起发布吗

标签: php email newline


【解决方案1】:

nl2br 不替换换行符。它在所有换行符之前添加“br”标签。如果要替换它们,请使用 str_replace();

vg 字节计数器

【讨论】:

    【解决方案2】:

    你可以试试:

    $ind_msg = str_replace(array('\r\n'), array('<br>'), $ind_msg);
    

    【讨论】:

      猜你喜欢
      • 2015-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-06
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多