Mail PHP如何工作?

时间:2014-11-13 15:17:09

标签: php email

我今天偶然发现以下脚本使用PHPMail发送电子邮件。

<?php
    $to = "some_address@domain.com";
    $subject = "Test mail";
    $message = "Hello! This is a simple email message.";
    $from = "my_address@domain.com";
    $headers = "From:" . $from;
    mail($to, $subject, $message, $headers);
    echo "Mail Sent.";
?>

以上内容可以通过php mail.php运行,即使不需要设置拨出/进入服务器,您也会立即从$to收到发送给$from的电子邮件。

它真的很吸引我,因为我的CMS使用SMTP传出服务器(好吧,就像Mail PHP一样),我需要使用我的Outlook SMTP用户名和密码进行设置 - 某种验证。

然而,关于Mail PHP只是...发送一封电子邮件。到您设置的地址。从您设置的地址开始。

PHP docs它并没有真正揭示它是如何运作的。 Mail PHP没有任何垃圾邮件问题,因为任何人都可以通过编程方式随时发送任何人而无需验证from身份吗?

编辑:

评论中的人们正在谈论POTUS,这很有趣,因为我记得确切的事情:

enter image description here

登陆我的垃圾文件夹,但我确信不难让它看起来足够令人信服且仍被视为"oh damn spam filter lost my e-mail!"

2 个答案:

答案 0 :(得分:4)

mail函数使用php.ini中的设置。可以在Mail Runtime Configuration中找到此配置的详细信息。

可以在php.ini中设置默认值,但您可以使用ini_set覆盖它们。

我打赌你从托管服务器上的PHP脚本发送了邮件。该服务器可能预先配置了SMTP设置。如果您在WAMP / LAMP服务器上本地尝试此操作,则必须自己进行此配置,因为PHP无法读取您的Outlook / WhateverMailclient设置。

如评论中所述,您可以自己指定发件人/发件人地址。 SMTP不要求它是实际的发件人域,这就是为什么这样做的原因。缺少的链接是主机的预配置SMTP服务器。

某些中继服务器会对此进行检查,并且您的邮件可能会被阻止或发送到垃圾邮件文件夹。但是,您可以在DNS中对此进行配置,以表明确实允许<Your server's IP>发送<yourdomain>的电子邮件。有关该主题的更多信息,您可能需要阅读this question on ServerFault

答案 1 :(得分:0)

它使用smtp协议或send_mail,你甚至可以配置php应该用什么来发送php.ini中的邮件。它可以发送电子邮件,但电子邮件将在您的垃圾邮件过滤器中结束,请查看DKIM和SPF记录以获取更多信息