php发送邮件标题乱码正文乱码问题
PHP程序使用mail()函数发送邮件的时候,标题中文的话会出现乱码。
解决方法:
先用函数base64_encode() — 使用 MIME base64 对数据进行编码
标题字符串前加编码类型例如: =?UTF-8?B?
标题字符串后加:?=
邮件header说明Content-type — 防止邮件正文也乱码
举例:<?php
$to = 'test@test.com';
$subject = "=?UTF-8?B?".base64_encode('邮件标题')."?=";
//base64_encode 解决标题乱码
$headers = 'MIME-Version: 1.0' . "
";
$headers .= 'Content-type: text/html; charset=utf-8' . "
";
// charset 解决正文编码
$headers .= "Content-Transfer-Encoding:8bit
";
//$headers .= 'To: Tmail Core <admin@admin.org>' . "
";
$headers .= 'From: Tmail Core <admin@admin.org>' . "
";
$headers .= 'Reply-To: Tmail Core <admin@admin.org>' . "
";
$headers .= 'Sender: Tmail Core <admin@admin.org>' . "
";
$message = "这是邮件正文";
mail($to, $subject, $message, $headers);
?>