Apache-2.2

如何設置 PHP 以在 Apache 上發送電子郵件?(視窗)

  • January 22, 2010

我在 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 伺服器以發送電子郵件?

經過進一步搜尋和測試,似乎:

  1. 在 Windows 上,PHP 的 mail() 函式不一定需要將電子郵件交給同一台電腦上的另一個程序;它可以自己連接到郵件伺服器
  2. 然而,這是低效且緩慢的。
  3. 在伺服器機器上設置虛假的 sendmailphp.ini並將’sendmail_path指令指向它可以更快地發送電子郵件。就我個人而言,我想像sendmail.exe著將數據咀嚼成可消化的好片段,然後像母鳥餵養她的嬰兒一樣吐到郵件伺服器的嘴裡。嗯!但也許我瘋了。
  4. 如果你sendmail.exe輸入C:\usr\bin,這允許一些期望在基於 Unix 的作業系統上執行的程序在 Windows 上執行

這是PHP 手冊中的一些資訊,幫助我解決了這個問題。

注意:mail() 的 Windows 實現在許多方面與 Unix 實現不同。首先,它不使用本地二進製文件來編寫消息,而僅在直接套接字上執行,這意味著需要 MTA 偵聽網路套接字(可以在 localhost 或遠端電腦上)。

和…

注意:值得注意的是,mail() 函式不適合循環處理大量電子郵件。此函式為每封電子郵件打開和關閉一個 SMTP 套接字,效率不高。如需發送大量電子郵件,請參閱 » PEAR::Mail 和 » PEAR::Mail_Queue 包。

引用自:https://serverfault.com/questions/105403