如何設置 PHP 以在 Apache 上發送電子郵件?(視窗)
我在 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 手冊中的一些資訊,幫助我解決了這個問題。
注意:mail() 的 Windows 實現在許多方面與 Unix 實現不同。首先,它不使用本地二進製文件來編寫消息,而僅在直接套接字上執行,這意味著需要 MTA 偵聽網路套接字(可以在 localhost 或遠端電腦上)。
和…
注意:值得注意的是,mail() 函式不適合循環處理大量電子郵件。此函式為每封電子郵件打開和關閉一個 SMTP 套接字,效率不高。如需發送大量電子郵件,請參閱 » PEAR::Mail 和 » PEAR::Mail_Queue 包。