使用PHP邮件-设置正确的MIME类型

3
我有一个关于发送电子邮件确认的PHP脚本的问题。在Thunderbird中收到电子邮件时,标题栏中会出现\r\n,并且MIME类型也包含Content-type信息。因此,电子邮件呈现为纯文本,而不是HTML。
如果我像下面这样注释掉MIME类型,那么电子邮件就可以正确呈现了。首先,这样做是否存在重大问题?其次,可能是什么原因导致这种情况发生?
if($apptpro_config->html_email == "Yes"){
        //$headers .= 'MIME-Version:1.0\r\n';
        $headers .= 'Content-type:text/html; charset=ISO-8859-1\r\n';
    }   



    return(mail($to, $subject, $message, $headers));

重复的问题:https://dev59.com/rXA65IYBdhLWcg3wxBmr。请翻译文本内容,不要进行解释。 - james.garriss
2个回答

10

请确保您将 \r\n 用双引号括起来(而不是单引号!),以便PHP可以将其转换为正确的换行符代码。

$header = 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/plain; charset=UTF-8' . "\r\n";


我已经完成了这个(虽然 MIME 和 Content-Type 在不同的行上,但当邮件通过时,我在邮件正文顶部得到 Content-type: text/plain; charset=UTF-8。MIME 类型在头部中正确设置。) - Jeepstone
<?php
mail('recipient@some.net', '主题',
'您的消息内容',
"收件人: 接收者 <recipient@some.net>\n" .
"发件人: 发送者 <sender@some.net>\n" .
"MIME版本: 1.0\n" .
"内容类型: 纯文本; 字符集=iso-8859-1");
?>
- Asif Mulla
1
在http://articles.sitepoint.com/print/advanced-email-php可以找到一份非常系统的关于高级PHP邮件的教程。 - Asif Mulla
我看了同样的SitePoint文章,得到了:$headers = "MIME-Version: 1.0\n" . "Content-type: text/html; charset=iso-8859-1"; - 就像你一样。谢谢。 - Jeepstone

0

这实际上是在Joomla内部完成的,因此它使用Joomla内部的邮件功能 - 仍然是PHP邮件,但在他们的框架内,所以不值得添加其他东西。 - Jeepstone
为什么人们会对5年前的评论进行负评?当时ZF是一个很好的替代选择。但5年后,就不再是了。 - Adam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接