【问题标题】:PHP mail() ' (single quote) in subject being escaped主题中的 PHP mail() '(单引号)被转义
【发布时间】:2018-10-09 12:10:43
【问题描述】:

我正在尝试使用 php mail() 函数发送电子邮件。我的代码如下。

$subject = "Let's Connect";
$to = $_POST['to'];
$message = $_POST['message'];

mail( $to, $subject, $message, array('Content-Type: text/html; charset=UTF-8'));  

问题是主题行中的 ' 在 Gmail 和 Yahoo 等电子邮件客户端中变为 \'Let's Connect 变为 Let\'s Connect。我在这里尝试了几种解决方案,例如

$sub = '=?UTF-8?B?'.base64_encode($subject).'?=';
$decoded_str = html_entity_decode ( $value_to_decode, ENT_QUOTES, 'UTF-8' );

它们似乎都不起作用。我应该怎么做才能解决它?

谢谢

【问题讨论】:

  • 你试过双引号吗? $subject = "Let's Connect";
  • @SananGuliyev 是的,我使用的是双引号。输入此问题时错误地输入了单引号。
  • 您是否尝试将您的 $subject 变量更改为 $subject = "Let\'s Connect"; 是否仍然在电子邮件中发生同样的事情?
  • 我猜你的问题找到了解决方案。

标签: php html-email


【解决方案1】:

我会使用stripslashes()html_entity_decode()

mail( $to, stripslashes(html_entity_decode($subject, ENT_QUOTES, 'UTF-8' )), $message, array('Content-Type: text/html; charset=UTF-8')); 

【讨论】:

  • 一开始我不会使用双引号。
  • 谢谢,成功了。
【解决方案2】:

像这样使用双引号:

$subject = "Let's Connect";

或者你可以使用斜线跳过它

$subject = 'Let\'s Connect';

你可以传stripslashes($subject)

【讨论】:

  • 我的错,是的,我在我的开发代码中使用了双引号。输入此问题时错误地使用了单引号。编辑了我的问题。
猜你喜欢
  • 2013-02-07
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 2018-04-26
  • 2014-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多