邮件中文问题

我们经常发送中文的电子邮件,而电子邮件的编码写web不大一样。我们一般用base64的编码来处理邮件头中非ascii字符。而现在UTF-8是web上最通用的编码。

$smtp->datasend("Content-Type:text/plain;charset=UTF-8\n"); #这里设置邮件内容的编码
$smtp->datasend("Subject:=?UTF-8?B?".encode_base64($title, '')."?=\n\n"); #encode_base64是MIME::Base64模块中的函数,$title为UTF-8编码过的
$smtp->datasend($mail_body." \n"); #$mail_body为UTF-8编码过的

其中=?UTF-8?B?为前缀,?=为后缀,B表示Base64编码。在邮件头的标题中,必须先用utf-8编码,然后再用base64编码,而邮件体就可以直接采用UTF-8的编码。
这样发出的邮件,就不会出现中文乱码的问题。

Tags: , , | Category: LAMP

By belltoy On October 13, 2008 10:27 PM | delicious 收藏 | Twitter 分享

添加评论