我很抱歉,如果我的问题听起来很幼稚,但我没有人可以问。我是PHP的新手,现在我正在玩PHP.mail()函数。
我使用XAMPP, PHP, SMTP服务器在我们的工作只是为了看到的功能。在C:'xampp'sendmail'sendmail.ini我设置
smtp_server=mail.heaven.com
auth_username=fairy
auth_password=nice
我创建了sendmail.php发送测试邮件给我自己:
<?php
$to = 'fairy@heaven.com';
$subject = 'greetings';
$message = 'if you read this, everything is fine';
$headers = 'From: devil@hell.com';
mail($to, $subject, $message, $headers);
?>
我运行了它,收到了devil@hell.com
的邮件,所以实际上是我的。我无法从这条消息中找到真正的发件人,我试图回复失败…因为devil@hell.com
并不存在。
现在来了,什么让我困惑。据我所知,第一步是向SMTP服务器提供真正的登录名和密码(auth_username, auth_password)。服务器知道我的存在,它让我在,所以我可以从我的真实帐户发送电子邮件。我以为,SMTP服务器会自动从我的帐户中获取所有必要的信息,并将其打包到电子邮件消息中,这样其他人就可以回复了,但显然不是。
我不明白,为什么我可以这么容易地添加误导信息。就我而言,我每天都可以用我的账户发假邮件来骚扰我的同事。我无法找出,谁才是真正的发送者。
此信息是否存储在任何地方?客户端是否可以看到谁发送了电子邮件,或者完全依赖于PHP.mail()函数中的From: header
?
谢谢澄清
SMTP
协议就是这样制定的。
你在告诉收件人你应该是谁,以及它如何回答你。没有谁控制电子邮件域或电子邮件用户的中央存储库。
它可以自己检查,通过实现安全机制,比如gmail使用DKIM在做什么。你不能冒充gmail的电子邮件。