PHP's mail function to send UTF-8 encoding Chinese mail when the title garbled solution,
Recently encountered a problem, is to use the PHP mail function to send UTF-8 encoded Chinese messages when the title garbled phenomenon, and the message body is correct. Originally thought is the page coding problem, found that the page encoding Utf-8 no problem ah, find a half-day reason, finally found the problem lies.
1. Using the PEAR Mail class
PEAR's Mail class allows you to choose to use SendMail or SMTP to send letters, so that the well-packaged interface is very useful, you do not need to reinvent the wheel.
2. Garbled characters of subject in headers
Do not put any other than iso-8859-1 encoding text directly into the subject, the correct way is to let subject inside the text conforms to RFC 2047 specifications, assuming that your subject text encoding is GB2312, then the correct subject this should be the format
$headers [' subject '] = ' =? GB2312? B? '. Base64_encode (' title text '). '?=';
If it is UTF-8, replace the GB2312 at the beginning of the above with UTF-8. It is recommended to use GB2312 encoding at the title, because the MTA is so fragmented that most of the MSPs use their own MTA, and most of the MTA in the country can support GB2312 encoding anyway.
If it is sent to a foreign MSP, it is recommended that you use the Base64 encoded UTF-8 text at subject, as they most likely do not support GB2312 encoding.
3. Be sure to add content-type in headers
e-Mail headers in the Content-type of similar pages, but also Text/plain; charset=gb2312 such a format. This option is mainly for the client to receive the message is meaningful, can avoid garbled in the client, part of the Webmail will also be based on the settings here to encode the content of the message to correct display. You can imagine the situation when you send the GB2312 code to the. com.tw mailbox.
4. Correct configuration of the host you use to send mail
1) must be configured to reverse resolution, because most of the non-fixed IP can not do reverse resolution, some anti-spam policies as a basis for judgment.
2) must be configured MX resolution, the same reason.
3) Make sure your return path is able to receive the return letter, otherwise your mail sending server may enter the blacklist on the receiving side.
First Use function Base64_encode ()-Encode data using MIME base64
The title string is pre-encoded type such as: =? UTF-8? B?
Title string after add:? =
For example:
<?php $to = "clairelume@qq.com";//change this e-mail address to your own. $name = $_post[' name ']; $email = $_post[' email ']; $subject = "Mail from a blog reader"; $subject = "=? UTF-8? B? ". Base64_encode ($subject). "? ="; $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 = $_post[' message ']; Mail ($to, $subject, $message, "from:". $email. "", $headers); Echo ' OK ' $name. ', your message has been sent. ';
In this way, the sent Chinese message header is not garbled.
is not very simple, in fact, the analysis of the problem, all the problems will be solved, I hope this article is helpful to everyone's study.
http://www.bkjia.com/PHPjc/1063232.html www.bkjia.com true http://www.bkjia.com/PHPjc/1063232.html techarticle PHP mail function to send UTF-8 encoding Chinese mail when the title garbled solution, recently encountered a problem, is to use the PHP mail function to send UTF-8 encoded Chinese message when the title appears ...