/ mail

PHP使用mail函数不进垃圾箱、无乱码

默认情况下,PHP直接使用mail函数发信,有很大的概率会进垃圾箱,特别是QQ邮箱,基本都会进垃圾箱,而且发件人是apache@localhost.localdomain。

搜索了一个下午,测试了各种各样的方式,终于搞定了这个问题。

服务器是redhat系统,装了sendmail。

打开php.ini,找到[mail function]段,把sendmail_path的值修改为/usr/sbin/sendmail -t -i -f。

其中/usr/sbin/sendmail是sendmail的路径。

保存、重启apache。

下面是发信代码:

$to = "leo108@qq.com"; $subject = "测试邮件"; $message = "测试内容"; $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type:text/html;charset=utf-8\r\n"; $headers .= "From:发件人root@leo108.com\r\n"; echo mail($to,$subject,$message,$headers);

收到邮件后会发现标题和发件人都变成乱码。

修改之后的代码:

$to = "leo108@qq.com"; $subject = "测试邮件"; $subject = "=?UTF-8?B?".base64_encode($subject)."?="; $message = "测试内容"; $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type:text/html;charset=utf-8\r\n"; $headers .= "From: leo108root@leo108.com\r\n"; echo mail($to,$subject,$message,$headers);

测试发信之后没有进入垃圾箱,唯一的缺点是会提示:

(此地址未验证,请注意识别)

PHP使用mail函数不进垃圾箱、无乱码
Share this