繁体   English   中英

通过PHP邮件发送的电子邮件中的=?UTF-8?B ?? =

[英]=?UTF-8?B??= in Emails sent via php mail problem

我有一个网站,在“联系方式”部分中,有一张用户可以填写与我联系的表格。 该表格是一个简单的表格,动作是一个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');

有人可以告诉我为什么大多数时间都可以这样做,但有时我会收到一封电子邮件,其中没有显示任何文本,主题行也没有显示

=?UTF-8?B??=

我使用Outlook Express,并且已经阅读了System.Net.Mail和=?utf-8?B?XXXXX ....标头,但没有帮助。

问题不在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:

好像信息已经丢失了。

您还应该知道我有一个VPS,可以自己管理。 我将postfix用作电子邮件服务器,如果那与它有任何关系。 但是话又说回来,为什么有时会起作用?

我还注意到的另一件事是,有时特殊字符无法正确显示(Outlook和Webmail都显示)。

例如,瑞典语中的“Björkman”名称显示为Björkman ,但有时也是如此。

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

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

看起来该窗体已发布,所有字段均保留为空白。 有些机器人在网上爬网并提交空表格。 您是否能够使用实际的表格数据重现此内容?

附加提示:您的代码可以进行电子邮件标题注入-我可以在$ _POST ['name']中发布所需的任何标题(以换行符分隔),然后您的代码会将其放入电子邮件标题中。 至少从用户数据中删除所有将进入标头部分的换行符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM