邮件 PHP 是如何工作的?
Posted
技术标签:
【中文标题】邮件 PHP 是如何工作的?【英文标题】:How does Mail PHP work? 【发布时间】:2015-01-10 19:04:49 【问题描述】:我今天偶然发现了以下使用 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
运行,并且您会立即收到一封从$from
发送到$to
的电子邮件,尽管不需要设置传出/传入服务器。
这真的让我很感兴趣,因为我的 CMS 使用 SMTP 传出服务器(嗯,与 Mail PHP 一样),我需要使用我的 Outlook SMTP 用户名和密码进行设置 - 某种验证。
然而,关于邮件 PHP 只是.. 发送一封电子邮件。到您设置的地址。从您设置的地址。
查看PHP docs 并没有真正揭示它是如何工作的。 Mail PHP 是否没有任何垃圾邮件问题,因为任何人都可以随时以编程方式向任何人发送任何内容,而无需验证from
身份?
编辑:
cmets 里的人在谈论 POTUS 真是太有趣了,因为我脑子里想的是确切的东西:
它确实落在了我的垃圾文件夹中,但我敢肯定,让它看起来足够有说服力并仍然被视为 "oh damn spam filter lost my e-mail!"
【问题讨论】:
如果发件人被覆盖,并且不是您的提供商给您的,这些邮件通常会落在垃圾邮件文件夹中。 你问题的最后一部分回答了它。这是您不应该依赖 PHP 的邮件功能的众多原因之一 尝试查看***.com/a/14456761/1857053并使用PHPmailer 这与 PHP 或邮件无关。这就是 SMTP 的工作方式。我可以用From: president@whitehouse.gov
轻松地伪造一封电子邮件给任何人。接收服务器是否接受是另一回事,但发送伪造的电子邮件从来都不是“难”
等等,总裁@MarcB 没有联系我?
【参考方案1】:
mail
函数使用 php.ini 中的设置。此配置的详细信息可以在Mail Runtime Configuration 中找到。
可以在 php.ini 中设置默认值,但您可以使用 ini_set
覆盖它们。
我敢打赌,您是通过托管服务器上的 PHP 脚本发送邮件的。该服务器可能预先配置了 SMTP 设置。如果您要在 WAMP/LAMP 服务器上本地尝试此操作,则必须自己进行此配置,因为 PHP 无法读取您的 Outlook/WhateverMailclient 设置。
如 cmets 中所述,您可以自己指定发件人/发件人地址。 SMTP 不要求它是实际的发件人域,这就是它起作用的原因。缺少的链接是您主机的预配置 SMTP 服务器。
某些中继服务器会对此进行检查,您的邮件可能会被阻止或发送到垃圾邮件文件夹。但是,您可以在您的 DNS 中配置它以指示确实允许<Your server's IP>
为<yourdomain>
发送电子邮件。有关该主题的更多信息,您可能需要阅读this question on ServerFault。
【讨论】:
我只是通过php mail.php
运行我的脚本。安装 Apache 有什么不同吗?
我认为不是。配置在 php.ini 中,当从命令行调用 PHP 时也应该可以工作。【参考方案2】:
它使用 smtp 协议或 send_mail,您甚至可以在 php.ini 中配置 php 应该使用什么来发送邮件。它可以发送电子邮件,但电子邮件最终会进入您的垃圾邮件过滤器,请查看 DKIM 和 SPF 记录以获取更多信息
【讨论】:
以上是关于邮件 PHP 是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章