Linux =?UTF-8?B???=通过php发送的电子邮件中存在邮件问题

Linux =?UTF-8?B???=通过php发送的电子邮件中存在邮件问题,linux,apache,php,email,postfix-mta,Linux,Apache,Php,Email,Postfix Mta,我有一个网站,在“联系”部分我有一张表格,用户可以填写表格与我联系。 表单是一个简单的表单,其操作是一个php页面 php代码: $to = "email@domain.com"; $name=$_POST['name']; // sender name $email=$_POST['email']; // sender email $tel= $_POST['tel']; // sender tel $subject=$_POST['subject']; // subject CH

我有一个网站,在“联系”部分我有一张表格,用户可以填写表格与我联系。 表单是一个简单的表单,其操作是一个php页面

php代码:

 $to = "email@domain.com";

 $name=$_POST['name']; // sender name
 $email=$_POST['email']; // sender email
 $tel= $_POST['tel']; // sender tel
 $subject=$_POST['subject']; // subject CHOSEN FROM DROPLIST, ALL TESTED
 $text=$_POST['text']; // Message from sender
 $text.="\n\nTel:".$tel; // Added to message to show me the telephone nr to the sender at bottom of message

 $headers="MIME-Version: 1.0"."\n";
 $headers.="Content-type: text/plain; charset=UTF-8"."\n";
 $headers.="From: $name <$email>"."\n";

 mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $text, $headers, '-fno-reply@domain.com');
$to=”email@domain.com";
$name=$_POST['name'];//发件人名称
$email=$_POST['email'];//发件人电子邮件
$tel=$_POST['tel'];//发送者电话
$subject=$_POST['subject'];//从DROPLIST中选择的受试者,所有受试者
$text=$_POST['text'];//发件人的邮件
$text.=“\n\nTel:”.$tel;//添加到消息以在消息底部向我显示发件人的电话号码
$headers=“MIME版本:1.0”。“\n”;
$headers.=“内容类型:文本/纯文本;字符集=UTF-8”“\n”;
$headers.=“发件人:$name”“\n”;
邮件($to,'=?UTF-8?B?')。base64_编码($subject)。'?=',$text,$headers'-fno-reply@domain.com');
有人能告诉我为什么这在大多数情况下都有效,但有时我会收到没有文本和主题行的电子邮件

=?UTF-8?B??= =?UTF-8?B= 我使用outlook express,我已经读过这篇文章 但这没用

问题不在Outlook中,因为当我登录到从中获取POP3电子邮件的实际邮件程序时,电子邮件看起来是一样的

当我在Outlook中右键单击并选择“消息源”时,没有“发件人”信息

例如,一条好消息应该是这样的:

Subject: =?UTF-8?B?w5Z2cmlndA==?= MIME-Version: 1.0 Content-type: text/plain; charset=UTF-8 From: John Doe Subject: =?UTF-8?B??= MIME-Version: 1.0 Content-type: text/plain; charset=UTF-8 From: 主题:=?UTF-8?B?w5Z2cmlndA== MIME版本:1.0 内容类型:文本/纯文本;字符集=UTF-8 发件人:约翰·多伊 但是,出现问题的情况如下所示:

Subject: =?UTF-8?B?w5Z2cmlndA==?= MIME-Version: 1.0 Content-type: text/plain; charset=UTF-8 From: John Doe Subject: =?UTF-8?B??= MIME-Version: 1.0 Content-type: text/plain; charset=UTF-8 From: 主题:=?UTF-8?B= MIME版本:1.0 内容类型:文本/纯文本;字符集=UTF-8 发件人: 好像信息已经丢失在什么地方了

你也应该知道我有一个VPS,我自己管理。 我使用postfix作为电子邮件服务器,如果这与它有关的话。 但话说回来,为什么它有时会起作用

我还注意到,有时特殊字符显示不正确(通过Outlook和webmail)

例如,瑞典语中的名称“Björkman”显示为类似于
BjÃrkman
,但同样,只是有时

我希望任何人都知道这个问题,因为至少我很难找到答案


如果您需要更多输入,请告诉我。

看起来该表单已发布,所有字段均为空白。有一些机器人在网上爬行并提交空表单。您是否能够用实际的表单数据复制此内容


额外提示:您的代码可以插入电子邮件标题-我可以在$_post['name']中发布任何我想要的标题,用换行符分隔,您的代码会将其放入电子邮件标题中。至少删除将进入页眉部分的用户数据中的任何换行符。

可能重复的“否”,我无法复制它。也许你是对的。。。我将添加mysql\u real\u escape\u字符串以对其进行清理,但问题是,我在提交之前使用javascript验证表单,并且不允许使用空字段。@Camran虽然可能不是这个问题的原因,但永远不要依赖客户端验证。