<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[PHP发送邮件标题乱码的解决]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Thu, 01 Nov 2012 06:21:47 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	<br/>当使用下面的PHP语句发送电子邮件的时候，如果编码和接收邮箱编码不相同,会发现邮件的标题是乱码，而邮件正文却是正确的，如何才能使得邮件标题不是乱码呢？<br/>　　$subject = stripslashes($the_post[&#039;Title&#039;]);<br/>　　$headers　= &quot;MIME-Version: 1.0&#92;r&#92;n&quot;;<br/>　　$headers .= &quot;Content-type: text/plain; charset=utf-8&#92;r&#92;n&quot;;<br/>　　$headers .= &quot;Content-Transfer-Encoding: 8bit&#92;r&#92;n&quot;;<br/>　　$message = stripslashes(strip_tags($the_post[&#039;Content&#039;]));<br/>　　mail($to, $subject, $message, $headers);<br/>　　先用函数base64_encode() — 使用 MIME base64 对数据进行编码<br/>　　标题字符串前加编码类型例如： =?UTF-8?B?<br/>　　标题字符串后加：?=<br/>　　例如：<br/>　　$subject = &quot;=?UTF-8?B?&quot;.base64_encode($subject).&quot;?=&quot;;<br/>　　将上面一句添加到代码之中，这样，发送的中文邮件标题就不是乱码了。<br/>&lt;?php<br/>$to&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= &#039;junhuibai@gmail.com&#039;;<br/>$subject = iconv(&#039;&#039;,&#039;GB2312&#039;,&#039;亲爱的&#039;.$s_user.&#039;，请取回您的密码！&#039;);<br/>$subject = &quot;=?GB2312?B?&quot;.base64_encode($subject).&quot;?=&quot;;<br/>$message = $s_user.&#039;，您好！&#039;.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;您的新密码是：&#039;.$pwd.&#039;&#039;.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;为了保证您用户的安全性，请登录更改您的密码。&#039;.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;此信是由系统发出，系统不接收回信，请勿直接回复！&#039;;<br/><br/>$headers = &#039;From: junhuibai@tom.com&#039; . &quot;&#92;r&#92;n&quot; .<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#039;Reply-To:junhuibai@tom.com&#039; . &quot;&#92;r&#92;n&quot; .<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#039;X-Mailer: PHP/&#039; . phpversion();<br/><br/>if(mail($to, $subject, $message,$headers))<br/>echo&#039;ok&#039;;<br/>else<br/>echo &#039;no&#039;;<br/>phpinfo();<br/>?&gt;<br/><br/>参考如下：<br/>很多朋友都使用过JavaMail进行邮件发送，在邮件正文中的乱码容易解决。但邮件主题的乱码无论怎样转码总是显示一堆乱码。到底应该怎么处理呢？<br/><br/>JavaMail中的邮件主题需要进行BASE64编码，格式形如：<br/>=?GB2312?B?xPq1xMPcwuvS0b6t1tjWw6Osx+u+ob/stcfCvKOssqLQ3rjEw9zC66Oh?=<br/>所以，直接使用msg.setSubject(&quot;中文主题&quot;)，或者msg.setSubject(&quot;中文主题&quot;.getBytes(&quot;8859_1&quot;), &quot;GB2312&quot;))都一样会出现乱码。在设置邮件主题前需要将主题字串的字节编码为BASE64格式，并添加编码头，示例代码如下：<br/><br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp; sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();&nbsp;&nbsp;&nbsp;&nbsp; msg.setSubject(&quot;=?GB2312?B?&quot;+enc.encode(subject.getBytes())+&quot;?=&quot;);
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] PHP发送邮件标题乱码的解决]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>