我在 Windows 上设置了一个 Apache 服务器(2.2.14),并从现有的 XAMPP 配置中借鉴了一些想法。我现在正在尝试为 PHP (5.3.1) 设置电子邮件功能。(它需要能够处理附件,就像 XAMPP 服务器一样。)
我注意到 XAMPP 带有用于 Windows 的假 sendmail,但是关于配置的一些事情对我来说没有意义。
以下是 XAMPP 的几行代码php.ini
:
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"
这很奇怪,因为:
- 它明确表示“仅适用于 Unix”,但
- 我一直看到说要在 Windows 上使用这条线的教程,并且
- 示例文件路径在 Unix 中甚至没有意义
sendmail_path
默认被注释掉
我想知道是否sendmail.exe
甚至有必要。因此,在我没有 的自定义 Apache 服务器上sendmail.exe
,我进行了编辑,为、和.php.ini
添加了正确的信息。有了它,它就可以发送邮件了!但这很慢。SMTP
smtp_port
sendmail_from
然后我回到 XAMPP 服务器并重命名sendmail
目录,希望禁用 sendmail。那种工作 - 我的 PHP 脚本声称已经发送,但什么也没发生。
所以我很困惑。
- 我的 XAMPP 服务器已
sendmail_path
注释掉,但显然仍在使用它指向的程序。它是怎么知道的? - 我的 Apache 服务器没有任何内容
sendmail_path
,但可以在没有它的情况下以某种方式发送邮件。它是如何做到的?
我实际上需要做什么来配置 Apache 服务器以发送电子邮件?
经过进一步搜索和测试,似乎:
在 Windows 上,PHP 的 mail() 函数不一定需要将电子邮件交给同一台计算机上的另一个程序;它可以自己连接到邮件服务器
然而,这是低效且缓慢的。
在服务器机器上设置虚假的 sendmail
php.ini
并将'sendmail_path
指令指向它可以更快地发送电子邮件。就我个人而言,我想象sendmail.exe
着将数据咀嚼成可消化的好片段,然后像母鸟喂养她的婴儿一样吐到邮件服务器的嘴里。嗯!但也许我疯了。如果你
sendmail.exe
输入C:\usr\bin
,这允许一些期望在基于 Unix 的操作系统上运行的程序在 Windows 上运行这是PHP 手册中的一些信息,帮助我解决了这个问题。
和...
Apache 并没有真正参与任何发送电子邮件的配置。这完全由 PHP 和本地 MTA 处理。MTA 几乎总是 Sendmail 或 Postfix。对此的配置位于名为 sendmail_path 的 [mail function] 部分下的 php.ini 文件中。