相信很多webmaster都是使用mail()函数发邮件的,虽然邮件发送成功率不如SMTP 模块和MX 模块发送的效果,但是mail函数简便是他们比不了的,只要服务器支持,一切就OK。
但是很多PHP程序使用mail()函数发送邮件的时候,标题是中文的话会出现乱码。
解决方法:
先用函数base64_encode() ― 使用 MIME base64 对数据进行编码
标题字符串前加编码类型例如: =?UTF-8?B?
标题字符串后加:?=
邮件header说明Content-type ― 防止邮件正文也乱码
举例:
$to = ‘root@ml.tc’;
$subject = “=?UTF-8?B?”.base64_encode(‘邮件标题’).”?=”;
$headers = ‘MIME-Version: 1.0′ . “rn”;
$headers .= ‘Content-type: text/html; charset=utf-8′ . “rn”;
// Additional headers
$headers .= ‘To: ljpbin <’”>root@ml.tc>’ . “rn”;
$headers .= ‘From: root <’”>root@ml.tc>’ . “rn”;
$headers .= ‘Reply-To: qiannian <’”>root@qiannian.org>’ . “rn”;
mail($to, $subject, $message, $headers);
具体请看:
- <?php
- function encode($str,$encode='utf-8'){
- $str = base64_encode($str);
- $str = "=?".$encode."?B?".$str."?=";
- return $str;
- }
- function mymail($to,$subject,$message){
- $subject = encode($subject);
- $admin_email = 'root@ml.tc';
- $admin_name = 'root';
- $admin_name = encode($admin_name);
- // To send HTML mail, the Content-type header must be set
- $headers = 'MIME-Version: 1.0' . "\r\n";
- $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
- // Additional headers
- $headers .= sprintf('To: %1$s',$to) . "\r\n";
- $headers .= sprintf('From: %1$s <%2$s>',$admin_name,$admin_email) . "\r\n";
- $status = mail($to, $subject, $message, $headers);
- return $status;
- }






