如何设置 PHP 以在 Apache 上发送电子邮件?(视窗)

Nat*_*ong 0 email php sendmail apache-2.2

我正在 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"
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为:

  • 它明确表示“仅适用于 Unix”,但
    • 我一直看到教程说在 Windows 上使用这条线,并且
    • 示例文件路径在 Unix 中甚至没有意义
  • sendmail_path 默认被注释掉

我想知道是否sendmail.exe有必要。所以,我的自定义Apache服务器,它不会对sendmail.exe,我编辑php.ini添加正确的信息SMTPsmtp_portsendmail_from。有了它,它就可以发送邮件了!但它很慢。

然后我回到XAMPP服务器并重命名sendmail目录,希望禁用sendmail。那种工作 - 我的 PHP 脚本声称已发送,但什么也没发生。

所以我很困惑。

  • 我的 XAMPP 服务器已sendmail_path注释掉,但显然仍在使用它指向的程序。它怎么知道?
  • 我的 Apache 服务器中没有任何内容sendmail_path,但可以在没有它的情况下以某种方式发送邮件。它是如何做到的?

我实际上需要做什么来配置 Apache 服务器以发送电子邮件?

Nat*_*ong 5

经过进一步的搜索和测试,似乎:

  1. 在 Windows 上,PHP 的 mail() 函数不一定需要将电子邮件传递给同一台计算机上的另一个程序;它可以自己连接到邮件服务器

  2. 然而,这是低效且缓慢的。

  3. 在服务器机器上设置假的 sendmail并将php.inisendmail_path指令指向它可以使发送电子邮件的速度更快。就我个人而言,我想象sendmail.exe将数据咀嚼成漂亮的、可消化的小块,然后像母鸟喂她的宝宝一样吐到邮件服务器的嘴里。嗯!但也许我疯了。

  4. 如果你sendmail.exe输入C:\usr\bin,这允许一些希望在基于 Unix 的操作系统上运行的程序在 Windows 上运行

这里是在PHP手册中的一些信息,帮助我来解决这一问题。

注意:mail() 的 Windows 实现在许多方面与 Unix 实现不同。首先,它不使用本地二进制文件来编写消息,而只在直接套接字上运行,这意味着需要 MTA 侦听网络套接字(可以在本地主机或远程机器上)。

和...

注意:值得注意的是,mail() 函数不适合循环处理大量电子邮件。该函数为每封电子邮件打开和关闭一个 SMTP 套接字,效率不是很高。如需发送大量电子邮件,请参阅 » PEAR::Mail 和 » PEAR::Mail_Queue 包。