gpt4 book ai didi

linux - =?UTF-8?B??= in Emails sent via php mail 问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:40:46 24 4
gpt4 key购买 nike

我有一个网站,在“联系方式”部分我有一个表格,用户可以填写该表格与我联系。该表单是一个简单的表单,其操作是一个 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 and =?utf-8?B?XXXXX.... Headers但它没有帮助。

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

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

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

Subject: =?UTF-8?B?w5Z2cmlndA==?=MIME-Version: 1.0Content-type: text/plain; charset=UTF-8From: John Doe 

然而,有问题的是这样的:

Subject: =?UTF-8?B??=MIME-Version: 1.0Content-type: text/plain; charset=UTF-8From:  

好像信息在某处丢失了。

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

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

例如,瑞典语中的名字“Björkman”显示为 Björkman,但同样,只是有时。

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

如果您需要更多信息,请告诉我。

最佳答案

看起来表单已发布,所有字段都留空。有机器人在网上爬行并提交空表单。您是否能够使用实际的表单数据重现此内容?

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

关于linux - =?UTF-8?B??= in Emails sent via php mail 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4520435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com