求教Postfix发邮件中文乱码怎么解决
环境:LNMP1.2邮件服务器:Postfix
症状:
使用php mail发送邮件后,收到的邮件中文主题显示正常,但主体内容部分中的中文为乱码。php.ini默认字符已设置为UTF-8,但还是收到乱码邮件。求教这个可能是哪的问题?怎么解决?谢谢军哥了! 贴一下你的发邮件代码看看
邮件代码
以下是邮件发送处理代码:<!--?php
if(isset($_POST['submitted'])) {
if(trim($_POST['contactName']) === '') {
$nameError = '请输入联系人';
$hasError = true;
} else {
$name = trim($_POST['contactName']);
}
if(trim($_POST['subjectContent']) === '') {
$subjectError = '请输入主题';
$hasError = true;
} else {
$name = trim($_POST['subjectContent']);
}
if(trim($_POST['email']) === ''){
$emailError = '请输入您的邮箱';
$hasError = true;
} else if (!eregi("^+@+\.{2,4}[ DISCUZ_CODE_0 ]quot;, trim($_POST['email']))) {
$emailError = '邮箱格式不正确';
$hasError = true;
} else {
$email = trim($_POST['email']);
}
if(trim($_POST['comments']) === '') {
$commentError = '请输入邮件内容';
$hasError = true;
} else {
if(function_exists('stripslashes')) {
$comments = stripslashes(trim($_POST['comments']));
} else {
$comments = trim($_POST['comments']);
}
}
if(!isset($hasError)) {
$emailTo = get_option('tz_email');
if (!isset($emailTo) || ($emailTo == '') ){
$emailTo = get_option('admin_email');
}
$subject = '网站邮件:'.$name;
$body = "姓名: $name \n\n邮箱: $email \n\n内容: $comments";
$headers = '来自:'.$name.' <'.$emailTo.'>' . "\r\n" . '回复:' . $email;
mail($emailTo, $subject, $body, $headers);
$emailSent = true;
}
} ?>
下面是邮件主体内容表单提交代码:
<?php if(isset($_POST['comments'])) { if(function_exists('stripslashes')) { echo stripslashes($_POST['comments']); } else { echo $_POST['comments']; } } ?>
<!--?php if($commentError != '') { ?-->
<!--?=$commentError;?-->
<!--?php } ?-->
[ 本帖最后由 半岛小生 于 2017-3-27 13:00 编辑 ]
回复 2# 的帖子
刚用QQ邮箱做了进一步测试,发现QQ邮箱收件居然能正常无乱码,可能还是邮箱客户端的问题,而不是服务器配置的问题。回复 4# 的帖子
标题上和header上都设置utf-8 的编码 $subject = "=?UTF-8?B?".base64_encode($subject)."?=";mail的header中指定上编码
$headers .= "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html; charset=utf-8" . "\r\n";
同时网站的编码也应该是utf-8,可以试试
回复 5# 的帖子
这个办法之前试过,还是会乱码的。还试过配置sendmail,均不行。不过只在126邮箱乱码,阿里云邮箱干脆就收不到,QQ邮箱确实正常无乱码。目前只好先用QQ企业邮局收件了,本身也就为简单网页留言发邮件功能。谢谢军哥的回复!暂时先搁置算了。
页:
[1]