作者games (games)
看板PHP
标题Re: [请益] mail()的问题
时间Wed Nov 2 15:08:54 2005
※ 引述《maluu (lalalalala)》之铭言:
: 推一下phpmailer.....我觉得不错用
: http://phpmailer.sourceforge.net/
: ※ 引述《chweng ()》之铭言:
: : 是这样的 我想做一个线上寄信的系统 所以会用到mail()函数
: : 我的网页都是用UTF-8编码的 这样一来 用这个系统寄出的信也都是UTF-8编码的
: : 可是我用Outlook Express收信时却都是乱码
: : 虽然可以在编码的地方正确地选回UTF-8 可是总是多一个步骤
: : 而且一收到就是乱码 还挺容易直接被我当成垃圾信砍了
: : 所以想问一下 是否可以使寄出信件的编码为BIG5
: : 或是改变信件的档头 让OE不要误判
: : 如果可以的话 我是很不想把那一页改回BIG5编码啦
: : 希望能有其他方法 请问要怎麽做比较好呢?
你可以参考我的作法:
要注意的地方有 1. $author 2. $subject 3. header 的 content_type
作者和标题的中文要用 mb_encode_mimeheader() 做编码,
如果内码是 utf-8, 就填 'utf-8', 如果是 'big5 就填 'big5'
例如: $subject = mb_encode_mimeheader("中文标题", "big5", "b");
第三个参数 'b' 是 base64 编码, 你也可以改用 'q' (quoted-printable 编码)
内文的部份可以由 header 的 "Content-Type: " 来设定他的内码
$to 的部份, 有中文的地方也要用 mb_encode_mimeheader() 转换
mb_internal_encoding("UTF-8"); // 文字原始的编码
$from = mb_encode_mimeheader($author, "utf-8", "b");
$from .= "<
[email protected]>";
$headers = "From: $from\r\n" .
"To: $to\r\n" .
"MIME-version: 1.0\r\n" .
"Content-Transfer-Encoding: 8bit\r\n" .
"Content-Type: text/html; charset=utf-8\r\n";
// base64
$subject = mb_encode_mimeheader($subject, "utf-8", "b");
$ret = mail($to, $subject, $content, $headers);
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.43.194.80
1F:推 lichihwu:多谢分享! 11/03 17:34