在 PHP 中使用“邮件”函数时“sendmail.exe”的有趣事实
Posted
技术标签:
【中文标题】在 PHP 中使用“邮件”函数时“sendmail.exe”的有趣事实【英文标题】:Fun fact with 'sendmail.exe' when using 'mail' function in PHP 【发布时间】:2011-12-08 07:16:27 【问题描述】:我已经将 sendmail_path 设置为 'sendmail.exe' 的路径,但是 php 没有发送电子邮件。它需要邮件服务器或其他东西。
PHP 说无法连接到 localhost 的 25 端口。在 php.ini 文件中有趣的事实是,在 'sendmail.exe' 的路径上方,声明“仅 Unix!????”,但 'sendmail .exe' 是 Windows 可执行文件。 [我相信我在 XAMPP 中的 sendmail.exe 是 Windows 版本的 Unix sendmail,所以 php.ini 中的注释可能不在正确的位置]
我只是发送电子邮件,不接收电子邮件,那么为什么我需要一个邮件服务器(如 Mercury)?还是 SMTP(协议)需要一个服务器来发送和接收?
按照我的想法,我们可以只打开目标服务器的端口(通常是25?465?)来发送消息。我这里和上面的程序有什么问题吗?
只是在类似的 *** 问题中找不到详细信息,所以我提出了这个问题,请帮我开导。
【问题讨论】:
嗯,你在哪个平台上? 所以基本上你想使用你在某处找到的 sendmail.exe 从 Windows 盒子发送电子邮件? @Pekka 我在 Windows 7 上使用 XAMPP @Furicane:我的“sendmail.exe”在 XAMPP 包中(包括 Apache、PHP、FileZilla、Mercury) 没关系,您实际上需要一个运行“某处”的 smtp 服务器,本地主机或公共广泛开放的 smtp。所以,是的,你确实需要一个用于 php 邮件、swift mailer 等的 smtp 服务器。还有像 hamster 这样的 smtp 库可以工作,但它也是一个在本地运行的 smtp 服务器。 【参考方案1】:仅仅因为您在计算机上找到了一个名为 sendmail.exe
的文件,这并不意味着 PHP 开箱即用地支持该特定二进制文件。
来自sendmail_path
:
[...] 该指令也适用于 Windows。如果设置,则忽略 smtp、smtp_port 和 sendmail_from 并执行指定的命令。
仔细检查您磁盘上的 sendmail.exe
是否与 PHP 兼容。
试试:
sendmail_path = "X:\path\to\sendmail.exe -t"
我只是发送电子邮件,不接收电子邮件,那么为什么我需要一个邮件服务器(如 Mercury)?还是 SMTP(协议)需要一个服务器来发送和接收?
你不需要。很可能是您与sendmail.exe
一起使用的配置(这不是 PHP 配置,而是寻找 sendmail.ini
)告诉sendmail.exe
使用 SMTP 服务器。
要么更改它,如果 sendmail.exe
没有提供您正在寻找的功能,请将 sendmail.exe
替换为符合您需求的内容。
只是默认情况下,发送电子邮件实际上是有意义的。那么,您为什么对有意义的配置感到不安呢?
另见:
Mock mail on xampp development box【讨论】:
我的 'sendmail.exe' 和 PHP 来自同一个 XAMPP 包。当我安装这个 XAMPP 时,它甚至会自动在 php.ini 中设置“sendmail_path” 但无论如何我们都必须在'sendmail.ini'中指定有关smtp服务器的信息。我想直接向目标 mx 服务器发送电子邮件,因为它更快(跳数更少),而不是连接到 smtp 服务器并要求它发送到目标服务器(更多跳数) @Paul:为您的 sendmail 使用本地 SMTP 服务器,您就拥有了。我猜XAMPP有一个,你只需要启动它。甚至可能是这样,然后一切都开箱即用。我强烈建议您开始阅读您使用的软件附带的文档。 我决定使用 Mercury,但 gmail 拒绝从我的电脑接收电子邮件,它说:“您用来发送电子邮件的 IP 未经授权”,关于 gmail mx 服务器的有趣事实。 @Paul:嗯,这就是为什么通常你只是重新使用另一个配置正确的 SMTP 服务器 - 所以你不需要自己配置它。但是,您想节省一跳,现在您遇到了一个更大的问题:当我对 SMTP 一无所知时,如何配置 SMTP 服务器。 ;)以上是关于在 PHP 中使用“邮件”函数时“sendmail.exe”的有趣事实的主要内容,如果未能解决你的问题,请参考以下文章
PHP“mail()”函数从 php5 cli 发送邮件,但在浏览器运行脚本时不发送