Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP邮件对主题行进行编码_Php_Email_Encoding - Fatal编程技术网

PHP邮件对主题行进行编码

PHP邮件对主题行进行编码,php,email,encoding,Php,Email,Encoding,当我试图从PHP发送一封HTML编码的电子邮件时,如果主题行包含特殊字符,如您请求的信息,PHP会将其编码为在此处阅读&039;这是你要求的信息 我该如何解决这个问题 下面是使用PHP mail时的代码: $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'To: ' . $mod_params['na

当我试图从PHP发送一封HTML编码的电子邮件时,如果主题行包含特殊字符,如您请求的信息,PHP会将其编码为在此处阅读&039;这是你要求的信息

我该如何解决这个问题

下面是使用PHP mail时的代码:

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

$headers .= 'To: ' . $mod_params['name'] . '<' . $mod_params['email'] . '>' . "\r\n";

$headers .= 'From: <do_not_reply@a4isp.com>' . "\r\n";  

$email_to = $mod_params['email'];

$email_sub = "Here's the Information You Requested";

$body = html_entity_decode("<html><body>" . $email_html_body . "</body></html>");

mail($email_to,$email_sub,$body,$headers);

它给出的错误与在SugarphpMail类中运行时的错误相同。

尝试在主题行中运行主题行,看起来主题行中可能有一些实体。

如果在发送之前字符串确实不包含编码值,请查看:

看看这些与SugarCRM相关的帖子:


经常提交有问题的代码块将确保您更快地获得更好的响应。您可能在该操作发生之前的某个位置对文本进行了编码。正如之前所建议的,你可以找出这个动作并纠正它,或者你可以在发送电子邮件之前简单地解码主题行。

我在一个我正在开发的Wordpress插件中遇到了类似的问题,我绞尽脑汁在这里和其他各种谷歌搜索结果中尝试不同的建议。我终于找到了一个适合我的解决方案,所以我将与大家分享。我会说,这是保罗的解决方案,我一开始尝试过,但没有成功,但原因是我试图速记解决方案。在我的例子中,仅仅调用html_实体_解码是不起作用的。为什么?如果我更仔细地阅读PHP文档,它将是显而易见的。我的问题是在一个单引号上编码,html实体解码的默认值是'ENT\u COMPAT',它不使用单引号。解决的办法是设置所有参数,这是可行的。事实上,自从我编码UTF-8以来,我可能已经省略了字符集,但我想我应该是彻底的

$decoded_str = html_entity_decode (  $value_to_decode, ENT_QUOTES, 'UTF-8' );
这里的课程很好,请阅读文档。我并不是说你没有,你可能有,但我们中的很多人都很匆忙,如果我们只看一眼,就会对坐在那里盯着我们脸的解决方案进行粉饰。

试试这个:

 $newsubject='=?UTF-8?B?'.base64_encode($subject).'?=';
通过这种方式,您不需要依赖PHP或MTA的编码,您可以完成这项工作,邮件客户端应该能够理解它。您的新主题中不会出现特殊字符,因此在发送电子邮件时不会出现任何问题。

您应该使用,只需记住在之前设置

mb_internal_encoding("UTF-8"); //has to be set (of course your internal encoding may not be UTF-8).
$subject = mb_encode_mimeheader($subject,'UTF-8','Q');

当需要时,它将负责编码为人类可读的引用可打印文件,并根据长度自动将主题分成适当数量的行。

尝试了这两种方法,但均无效。我以前从未见过这种情况。谢谢你的回复。我在发送之前已经试过解码了。我还尝试过从php邮件函数而不是SugarPhpMail类发送相同的电子邮件。这不是具体的。邮件也是一样,我用的是这个彼得。看起来不错,除非主题有点长。你知道怎么拼吗?我的意思是,主体应该被划分的大小是多少?怎么做呢?绝对是绝妙的解决方案。感谢大家@Peter结束了三个小时的拉头发课程!!!您可以使用60个字符的chunk_split,并将其应用于每个块,然后添加新行和一些空格来连接这些块。我说60个字符来调整编码头部分的其余部分。这对我很有用,谢谢。我在电子邮件主题中使用了®符号,我使用的是Symfony和Swifmailer。
mb_internal_encoding("UTF-8"); //has to be set (of course your internal encoding may not be UTF-8).
$subject = mb_encode_mimeheader($subject,'UTF-8','Q');