【问题标题】:retaining line breaks in email body在电子邮件正文中保留换行符
【发布时间】:2011-06-26 18:45:18
【问题描述】:

我有一个反馈表,用户可以在其中在文本区域中输入他/她的反馈。提交表单后,我正在使用 php 邮件功能将所有用户详细信息放入我的邮件中。

mail( "aaa@ddd.com", "Subject: Comments posted by $postedBy", $message, "From: $emailID" );

这里$message是用户cmets。但是我在电子邮件正文中得到了类似的东西。

Hi.test line break\r\nnew line\r\nnewline 2\r\ntest again\r\nagain.

文本区域中的换行符显示在邮件中。我怎样才能解决这个问题?

编辑:

$message = mysql_real_escape_string($_POST['comments']);

【问题讨论】:

  • (仅限 Windows)当 PHP 直接与 SMTP 服务器通信时,如果在行首找到句号,则将其删除。要解决此问题,请将这些出现替换为双点。
  • 如何设置$message?您可以发布该行的代码吗?
  • 看到另一个SPAM网关有点可惜...
  • @Col。弹片。我是网络开发的新手。所以我不太明白你的意思。
  • 但是,如果您仍然在其他字段上使用 mysql_real_escape_string。这很荒谬,但它可以保护这种形式免受垃圾邮件的侵害,哈哈 :)

标签: php html


【解决方案1】:

是直接显示\r\n还是全部在一行看不到\r\n? 最后,我认为您必须设置正确的内容类型。 在http://php.net/manual/en/function.mail.php 的示例 4 中,您可以看到如何设置内容类型。但是您必须为此使用纯文本。

编辑: 编辑后: mysql_real_escape 屏蔽所有换行符。在你的 mail() 调用上使用 $_POST['comment'] 让它工作!

mail($to, $subject, $_POST['comment'], $from);

【讨论】:

【解决方案2】:

您的代码中有一些函数可以用 \r\n 替换换行符。
只需跟踪您的代码并查看此替换发生的位置,然后将其删除。
没什么大不了的

【讨论】:

  • 是的。我正在使用 mysql_real_escape。谢谢
【解决方案3】:

我不确定您是否尝试过,但您可以尝试将“\r\n”替换为“
”。
或者看看您是否可以更改电子邮件 mime 类型
检查这个
http://php.bigresource.com/Email-MIME-Types-KesYPexl.html

【讨论】:

  • 鉴于mail 调用中没有设置 MIME 标头,这似乎不太可能是 HTML 邮件...
  • 我使用的是简单邮件。不是 html 邮件
猜你喜欢
  • 2014-05-21
  • 2018-01-10
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
  • 1970-01-01
  • 2022-01-10
相关资源
最近更新 更多