【转】解决mail()函数乱码问题

自己搞好了,参考了一下其他的发邮件的类。希望对大家以后有帮助啦,现在总结一下,有东西大家分享
^_^
问题:用mail()函数发送的,$mailsuccess=mail($to, $subject, $message, $headers);
$subject是邮件标题,$message是内容,$headers是头文件信息
$message内容的乱码,我是通过发送html的形式来指定页面编码来解决的,meta可以设置的,而指定使用html的$header里面Content-type: text/html; charset=UTF-8" . "\r\n";也可以设置,哪个起作用就不知道了
$subject的乱码是经过base64_encode()处理,然后设置一些信息,后解决的,$headers里指定发送者也是这种方法解决的,不过$headers变量不能整个编码,只能对发送者进行编码,否者,大家可以试下是什么结果^_^,下面把例子贴出来,大家一起研究下

对中文进行处理

PHP代码如下:
function Encode($str){//对中文进行编码
   
$str=base64_encode($str);
   
$str= "=?"."UTF-8?B?".$str."?=";
    return
$str;
   }
 




PHP代码如下:
$to  = [email=example@mail.com]example@mail.com[/email]; // to email
  
$post="中文中文";
  
$subject = '中文中文;
   $userName=Encode($userName);
   $post=Encode($post);
   $subject=Encode($subject);
   $message = <<<eot
               <html>
      <head>
        <title>Active Member</title>
         <meta    http-equiv="Content-Type"    c    />
      </head>
      <body>
        <p>中文中文</p>
      </body>
      </html>
eot;
   $headers   = "MIME-Version: 1.0" . "\r\n";
   $headers .= "Content-type: text/html; charset=UTF-8" . "\r\n";//UTF-8
  
   // Additional headers
   $headers .= "To: $userName [email=example@mail.com]example@mail.com[/email]" . "\r\n";
   $headers .= "From:$post<[email=apache@inhouse.youtig.com]ex[/email]ample@mail.com>" . "\r\n";//$post是一般的邮箱显示的发送者,英文当然没问题了,中文就必须处理
   $headers .= "Cc: [email=example@mail.com]example@mail.com[/email]" . "\r\n";
   $headers .= "Bcc:[email=example@mail.com]example@mail.com[/email]". "\r\n";
   $mailsuccess=mail($to, $subject, $message, $headers);



辛苦,一个小问题搞了一天,希望明天大家会更加好

posted @ 2010-09-05 20:50  →province★  阅读(237)  评论(0编辑  收藏  举报