打印

[Postfix] 求教Postfix发邮件中文乱码怎么解决

求教Postfix发邮件中文乱码怎么解决

环境:LNMP1.2
邮件服务器:Postfix
症状:
使用php mail发送邮件后,收到的邮件中文主题显示正常,但主体内容部分中的中文为乱码。php.ini默认字符已设置为UTF-8,但还是收到乱码邮件。求教这个可能是哪的问题?怎么解决?谢谢军哥了!

TOP

贴一下你的发邮件代码看看

Paypal信用卡代付/代购VPS/域名/软件/付费代维问题解决等 QQ 503228080 旺旺 lzhenbao
军哥淘宝店铺
QQ/旺旺仅提供代购及付费代维/问题解决等服务,其他不回复!LNMP相关问题请在本论坛发帖,提问前先搜索,按https://bbs.vpser.net/thread-2555-1-1.html 反馈信息!

TOP

邮件代码

以下是邮件发送处理代码:
复制内容到剪贴板
代码:
<!--?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("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{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 编辑 ]

TOP

回复 2# 的帖子

刚用QQ邮箱做了进一步测试,发现QQ邮箱收件居然能正常无乱码,可能还是邮箱客户端的问题,而不是服务器配置的问题。

TOP

回复 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,可以试试

Paypal信用卡代付/代购VPS/域名/软件/付费代维问题解决等 QQ 503228080 旺旺 lzhenbao
军哥淘宝店铺
QQ/旺旺仅提供代购及付费代维/问题解决等服务,其他不回复!LNMP相关问题请在本论坛发帖,提问前先搜索,按https://bbs.vpser.net/thread-2555-1-1.html 反馈信息!

TOP

回复 5# 的帖子

这个办法之前试过,还是会乱码的。还试过配置sendmail,均不行。不过只在126邮箱乱码,阿里云邮箱干脆就收不到,QQ邮箱确实正常无乱码。目前只好先用QQ企业邮局收件了,本身也就为简单网页留言发邮件功能。谢谢军哥的回复!暂时先搁置算了。

TOP