

当使用下面的PHP语句发送电子邮件的时候,如果编码和接收邮箱编码不相同,会发现邮件的标题是乱码,而邮件正文却是正确的,如何才能使得邮件标题不是乱码呢?
	  $subject = stripslashes($the_post['Title']);
	  $headers = "MIME-Version: 1.0\r\n";
	  $headers .= "Content-type: text/plain; charset=utf-8\r\n";
	  $headers .= "Content-Transfer-Encoding: 8bit\r\n";
	  $message = stripslashes(strip_tags($the_post['Content']));
	  mail($to, $subject, $message, $headers);
	  先用函数base64_encode() — 使用 MIME base64 对数据进行编码
	  标题字符串前加编码类型例如: =?UTF-8?B?
	  标题字符串后加:?=
例如:
$subject = "=?UTF-8?B?".base64_encode($subject)."?=";
将上面一句添加到代码之中,这样,发送的中文邮件标题就不是乱码了。
	<?php
	$to      = 'junhuibai@gmail.com';
	$subject = iconv('','GB2312','亲爱的'.$s_user.',请取回您的密码!');
	$subject = "=?GB2312?B?".base64_encode($subject)."?=";
	$message = $s_user.',您好!'.
	                '您的新密码是:'.$pwd.''.
	                '为了保证您用户的安全性,请登录更改您的密码。'.
	                '此信是由系统发出,系统不接收回信,请勿直接回复!';
	
	$headers = 'From: junhuibai@tom.com' . "\r\n" .
	    'Reply-To:junhuibai@tom.com' . "\r\n" .
	    'X-Mailer: PHP/' . phpversion();
	
	if(mail($to, $subject, $message,$headers))
	echo'ok';
	else 
	echo 'no';
	phpinfo();
	?> 
	
	参考如下:
	很多朋友都使用过JavaMail进行邮件发送,在邮件正文中的乱码容易解决。但邮件主题的乱码无论怎样转码总是显示一堆乱码。到底应该怎么处理呢?
	
	JavaMail中的邮件主题需要进行BASE64编码,格式形如:
	=?GB2312?B?xPq1xMPcwuvS0b6t1tjWw6Osx+u+ob/stcfCvKOssqLQ3rjEw9zC66Oh?=
	所以,直接使用msg.setSubject("中文主题"),或者msg.setSubject("中文主题".getBytes("8859_1"), "GB2312"))都一样会出现乱码。在设置邮件主题前需要将主题字串的字节编码为BASE64格式,并添加编码头,示例代码如下:
	     sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();     msg.setSubject("=?GB2312?B?"+enc.encode(subject.getBytes())+"?=");
	 
上一篇:初级设计师与高级设计师的差距   
           
下一篇:linux每天自动备份mysql数据库的方法 
