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

如何設定 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正確資訊。這樣就可以發送郵件了!但速度非常慢。SMTPsmtp_portsendmail_from

然後我回到XAMPP伺服器並重新命名該sendmail目錄,希望停用sendmail。這種方法很有效——我的 PHP 腳本聲稱已發送,但什麼也沒發生。

所以我很困惑。

  • 我的 XAMPP 伺服器已sendmail_path註解掉,但顯然仍然使用它指向的程式。它是怎麼知道的?
  • 我的 Apache 伺服器中沒有任何內容sendmail_path,但可以在沒有它的情況下以某種方式發送郵件。它是如何做到的?

我實際上需要做什麼來配置 Apache 伺服器來發送電子郵件?

答案1

經過進一步查找和測試,發現:

  1. 在 Windows 上,PHP 的 mail() 函數不一定需要將電子郵件傳遞給同一台電腦上的另一個程式;它可以自己連接到郵件伺服器

  2. 然而,這是低效且緩慢的。

  3. 配置假髮郵件在伺服器電腦上並將php.inisendmail_path指令指向它可以使發送電子郵件更快。就我個人而言,我想像sendmail.exe將資料咀嚼成易於消化的小塊,然後像母鳥餵養嬰兒一樣吐到郵件伺服器的嘴裡。嗯嗯!但也許我瘋了。

  4. 如果輸入,這允許一些期望在基於 Unix 的作業系統上運行的程式在 Windows 上sendmail.exe運行C:\usr\bin

這是PHP手冊中的一些信息這幫助我解決了這個問題。

注意:mail() 的 Windows 實作在許多方面與 Unix 實作不同。首先,它不使用本機二進位檔案來編寫訊息,而是僅在直接套接字上運行,這意味著 MTA 需要偵聽網路套接字(可以在本機主機或遠端電腦上)。

和...

注意:值得注意的是,mail() 函數不適合在循環中發送大量電子郵件。此函數為每封電子郵件開啟和關閉一個 SMTP 套接字,效率不是很高。對於發送大量電子郵件,請參閱 » PEAR::Mail 和 » PEAR::Mail_Queue 套件。

答案2

Apache 並不真正參與任何發送電子郵件的配置。這完全由 PHP 和本地 MTA(在本例中)處理。 MTA 幾乎總是 Sendmail 或 Postfix。此配置位於名為 sendmail_path 的 [mail function] 部分下的 php.ini 檔案中。

相關內容