主题或消息中包含特殊字符的电子邮件的 PHP 邮件标头
Posted
技术标签:
【中文标题】主题或消息中包含特殊字符的电子邮件的 PHP 邮件标头【英文标题】:PHP Mail header for emails with special characters in the subject or message 【发布时间】:2013-02-21 09:48:42 【问题描述】:我的代码:
$to = 'example@example.com';
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
$header = "From: noreply@example.com\r\n";
$header.= "MIME-Version: 1.0\r\n";
$header.= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$header.= "X-Priority: 1\r\n";
mail($to, $subject, $message, $header);
当我发送带有特殊字符(例如®ð-˚©-ʼ“æ,˚ˍðß©
)的邮件时,
在消息中,它可以工作,但不再处理间距(每个新行或空格都被删除)
第二个问题是主题中没有显示特殊字符。
他们只是输出:øʼªʼ
提前致谢!
【问题讨论】:
【参考方案1】:内容类型:文本/html
如果您设置此标头,则意味着您必须将 HTML 发送给用户。您可以决定使用 TinyMCE 之类的东西,让用户在 Word 样式的编辑器中编写消息,并使用其中的 HTML 输出。或者将您的标题设置为纯文本。
内容类型:文本/纯文本
编辑:试试这个
$to = 'example@example.com';
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
$header = "From: noreply@example.com\r\n";
$header.= "MIME-Version: 1.0\r\n";
$header.= "Content-Type: text/plain; charset=utf-8\r\n";
$header.= "X-Priority: 1\r\n";
mail($to, $subject, $message, $header);
【讨论】:
谢谢,这解决了间距问题和主题中的字符。然而,这条消息给了我类似的东西:¨®ð¥þƒˍ©ˇ˚
更新了我的答案并提出了解决该问题的建议。让我知道它是否有效
这也保留了间距,但在主题和消息中都输出����.�˚��˚
之类的东西
那不就是你得到的请求参数坏了吗?试试 var_dump($_REQUEST) 看看你得到了什么样的数据。
在 php_EOL 上使用 \r\n 有什么好处吗?【参考方案2】:
我已经使用了这个标题,这对我有用...
$headers = '';
$headers = 'MIME-Version: 1.0'.PHP_EOL;
$headers .= 'Content-type: text/html; charset=iso-8859-1'.PHP_EOL;
$headers .= 'From: webmaster@example.com<From: webmaster@example.com>'.PHP_EOL;
【讨论】:
【参考方案3】:不要使用 mail() 函数。使用为您完成(正确)工作的完全精心设计的课程。
http://code.google.com/a/apache-extras.org/p/phpmailer/
【讨论】:
当我看到像“composer”或“autoload”这样的简单任务(如发送邮件)时,我会立即关闭选项卡。这不是解决方案,而是一大堆新问题。 当一些黑客利用您的 mail() 例程或您的所有电子邮件都进入垃圾邮件时,您将重新打开选项卡 :) 顺便说一句,我使用的是普通库,没有自动加载,没有作曲家。仅包含 2 个。【参考方案4】:您的代码的问题是因为特殊字符也需要“特殊”字符集。
尝试将 charset=ISO 更改为 charset=UTF8...
此外,PHP 的 mail() 函数也可以,但如果您寻求更好的解决方案,例如 Swift Mailer,您会发现更多的好处和选择
【讨论】:
谢谢,但这样做我确实得到了正确的间距,但输出就像�����&#717;�&#711;&#730;
确保在 mail() 函数中设置了正确的字符集,并将文件保存在相同的字符集中。以上是关于主题或消息中包含特殊字符的电子邮件的 PHP 邮件标头的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 php 在 mailchimp API 中包含消息正文