注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Q超越兔子的蜗牛O--逸云沙鸥Linux

飘飘何所似,天地一沙鸥;落霞与孤鹜齐飞,秋水共长天一色~~

 
 
 

日志

 
 

PHP 发 mail 中文乱码 解决方案  

2010-11-05 17:57:24|  分类: IT百科杂谈 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
主要是编码的问题:
解决办法就是: 读取的数据设置好编码方式; 发邮件的时候也指定编码方式;
先用函数base64_encode() 使用 MIME base64 对数据进行编码
标题字符串前加编码类型例如: =?UTF-8?B?
当然如果是gb2312的话就 =?GB2312?B?
标题字符串后加:?=
-----------我的供配置参考---------
  1. <html>
  2. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
  3. <body>
  4. <?php
  5. if(strlen($_POST["from"]) > 1)
  6. //if "email" is filled out, send email
  7. {
  8. //send email
  9. $email = $_POST["from"] ; 
  10. $mailto = $_POST["mailto"];
  11. $subject = "=?UTF-8?B?" . base64_encode($_POST["subject"]) . "?="; 
  12. $message = $_POST["message"] ;
  13. $header = 'MIME-Version: 1.0' . "\r\n" 
  14. . "Content-type: text/html; charset=utf-8". "\r\n" 
  15. . "From: <$email>"."\r\n";
  16. //echo "mailto:$mailto<br />", "Subject: $subject<br />", "message:$message<br />", "From: $email<br />" ;
  17. mail("$mailto", "$subject", $message, "$header" );
  18. echo "<br />Your mail has been sent ! 
  19. Thank you for using our Mail system ...<br />
  20. We shall go to main page in 3 seconds <br />";
  21. }
  22. else{
  23. echo "<center><h2>Welcome to Qunero-php Mail system </h2></center><br />";
  24. echo '<form method="post" action="index.php">
  25. From : <input type="text" name="from" /><br/ >
  26. MailTo : <input type="text" name="mailto" /><br />
  27. Subject : <input type="text" name="subject" /><br />
  28. Message : <br /><textarea name="message" rows="15" cols="80"> </textarea><br />
  29. <input type="submit" />
  30. </form>';
  31. }
  32. ?>
  33. </body>
  34. </html>

----------------- over ---------------

  1. <?php 
  2. /** 
  3.  * PHP 邮件乱码处理. 
  4.  * 
  5.  * @author: Guya 
  6.  */ 
  7.  
  8. /** 
  9.  * 邮件中文字符编码函数. 
  10.  * 通常编码就是 =? + 大写的页面编码 + ?B? + base_64()编码的字符 + ?= 很容易不是 :) 
  11.  * 
  12.  * @param string $text 要编码的字符串. 
  13.  * @param string $charset 页面编码. 
  14.  * @return string 
  15.  */ 
  16. function _encodeForMail($text$charset) { 
  17.     return '=?' . strtoupper($charset) . '?B?' . base64_encode($text) . '?='
  18.  
  19. //邮件编码 
  20. $charset = 'utf-8'
  21.  
  22. //邮件接收者 
  23. $to = array
  24.     'email' => 'test@test.com'
  25.     'nick' => '菜菜' 
  26. ); 
  27.  
  28. //邮件发送者 
  29. $from = array
  30.     'email' => 'master@mmclub.net'
  31.     'nick' => '管理员' 
  32. ); 
  33.  
  34. //邮件主题 
  35. $subject = '测试邮件'
  36.  
  37. //邮件内容 
  38. $content = <<< HereDoc 
  39. <html> 
  40. <head> 
  41. <meta http-equiv="Content-Type" content="text/html; charset=$charset" /> 
  42. <title>Mail Test</title> 
  43. </head> 
  44. <body> 
  45. 您好! mmclub.net 
  46. </body> 
  47. </html> 
  48. HereDoc; 
  49.  
  50. //邮件头信息 
  51. $header = 'MIME-Version: 1.0' . "\r\n"
  52. $header .= 'Content-type: text/html; charset=' . $charset . "\r\n"
  53. $header .= 'Content-Transfer-Encoding: 8bit' . "\r\n";   //这里要设置成 8bit, 不要使用 base64 
  54. $header .= 'From: ' . _encodeForMail($from['name'], $charset) . ' <' . $from['email'] . '>' . "\r\n"
  55. $header .= 'X-Mailer: MF/1.0';  //本代码片段来自 Mm Framework 一下部分. 可忽略此行. 
  56.  
  57. $toString = _encodeForMail($to['name'], $charset) . ' <' . $to['email'] . '>'
  58. $subject = _encodeForMail($subject$charset); 
  59.  
  60. //发送邮件. OK! 用客户端收一下看看. 正常显示中文了. 
  61. mail($toString$subject$content$header); 




  评论这张
 
阅读(3399)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017