VPS侦探论坛

 找回密码
 注册
查看: 8373|回复: 5

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

[复制链接]
发表于 2017-3-26 17:31:36 | 显示全部楼层 |阅读模式

环境:LNMP1.2
邮件服务器:Postfix
症状:
使用php mail发送邮件后,收到的邮件中文主题显示正常,但主体内容部分中的中文为乱码。php.ini默认字符已设置为UTF-8,但还是收到乱码邮件。求教这个可能是哪的问题?怎么解决?谢谢军哥了!
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2017-3-27 10:31:53 | 显示全部楼层


贴一下你的发邮件代码看看
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
 楼主| 发表于 2017-3-27 12:58:25 | 显示全部楼层

邮件代码


以下是邮件发送处理代码:
  1. <!--?php
  2. if(isset($_POST['submitted'])) {
  3.     if(trim($_POST['contactName']) === '') {
  4.         $nameError = '请输入联系人';
  5.         $hasError = true;
  6.     } else {
  7.         $name = trim($_POST['contactName']);
  8.     }

  9.     if(trim($_POST['subjectContent']) === '') {
  10.         $subjectError = '请输入主题';
  11.         $hasError = true;
  12.     } else {
  13.         $name = trim($_POST['subjectContent']);
  14.     }
  15.          
  16.     if(trim($_POST['email']) === '')  {
  17.         $emailError = '请输入您的邮箱';
  18.         $hasError = true;
  19.     } else if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}[        DISCUZ_CODE_0        ]quot;, trim($_POST['email']))) {
  20.         $emailError = '邮箱格式不正确';
  21.         $hasError = true;
  22.     } else {
  23.         $email = trim($_POST['email']);
  24.     }

  25.     if(trim($_POST['comments']) === '') {
  26.         $commentError = '请输入邮件内容';
  27.         $hasError = true;
  28.     } else {
  29.         if(function_exists('stripslashes')) {
  30.             $comments = stripslashes(trim($_POST['comments']));
  31.         } else {
  32.             $comments = trim($_POST['comments']);
  33.         }
  34.     }

  35.     if(!isset($hasError)) {
  36.         $emailTo = get_option('tz_email');
  37.         if (!isset($emailTo) || ($emailTo == '') ){
  38.             $emailTo = get_option('admin_email');
  39.         }
  40.         $subject = '网站邮件:'.$name;
  41.         $body = "姓名: $name \n\n邮箱: $email \n\n内容: $comments";
  42.         $headers = '来自:'.$name.' <'.$emailTo.'>' . "\r\n" . '回复:' . $email;

  43.         mail($emailTo, $subject, $body, $headers);
  44.         $emailSent = true;
  45.     }

  46. } ?>
复制代码


下面是邮件主体内容表单提交代码:
  1.                                 <?php if(isset($_POST['comments'])) { if(function_exists('stripslashes')) { echo stripslashes($_POST['comments']); } else { echo $_POST['comments']; } } ?>
  2.                                 <!--?php if($commentError != '') { ?-->
  3.                                     <!--?=$commentError;?-->
  4.                                 <!--?php } ?-->
复制代码

[ 本帖最后由 半岛小生 于 2017-3-27 13:00 编辑 ]
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
 楼主| 发表于 2017-3-27 13:23:33 | 显示全部楼层

回复 2# 的帖子




刚用QQ邮箱做了进一步测试,发现QQ邮箱收件居然能正常无乱码,可能还是邮箱客户端的问题,而不是服务器配置的问题。
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
发表于 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,可以试试

军哥运维代购:http://shop63846532.taobao.com/

 楼主| 发表于 2017-3-27 22:29:58 | 显示全部楼层

回复 5# 的帖子


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

本版积分规则

小黑屋|手机版|Archiver|VPS侦探 ( 鲁ICP备16040043号-1 )

GMT+8, 2024-12-14 06:29 , Processed in 0.026747 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表