邮件 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 中配置它以指示确实允许&lt;Your server's IP&gt;&lt;yourdomain&gt; 发送电子邮件。有关该主题的更多信息,您可能需要阅读this question on ServerFault。

【讨论】:

我只是通过php mail.php 运行我的脚本。安装 Apache 有什么不同吗? 我认为不是。配置在 php.ini 中,当从命令行调用 PHP 时也应该可以工作。【参考方案2】:

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

【讨论】:

以上是关于邮件 PHP 是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章

php邮件功能不想工作

Php SMTP 邮件发送仅在本地工作

PHP Mail停止工作[重复]

XAMPP OSX Lion 让邮件正常工作

Ajax 如何与 PHP 一起工作?

PhP 邮件无法正常工作 windows 7 xampp - argosoft 邮件服务器