半岛小生 发表于 2017-3-26 17:31:36

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

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

licess 发表于 2017-3-27 10:31:53

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

半岛小生 发表于 2017-3-27 12:58:25

邮件代码

以下是邮件发送处理代码:
<!--?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 编辑 ]

半岛小生 发表于 2017-3-27 13:23:33

回复 2# 的帖子

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

licess 发表于 2017-3-27 19:18:40

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

半岛小生 发表于 2017-3-27 22:29:58

回复 5# 的帖子

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