2009-06-10 10 views
6

我使用GoDaddy託管我的網站,我現在使用PHP mail()函數從我的網站發送表單郵件。 GoDaddy每天對郵件內容有1000個SMTP中繼限制,但他們發誓,我的PHP腳本不應該觸及它。PHP郵件()默認使用什麼SMTP服務器,並且有更好的選擇嗎?

  1. 由於mail()不採取SMTP信息,它只是自動使用GoDaddy的(或其他託管你可能會在)?

  2. 如果我的網站預計每天發送超過1000封電子郵件(單獨的實例,而不是循環),我應該使用不同的方法,或者是否是正確的選擇?

+1

這是PHP在Linux或Windows上? – Kev 2009-06-10 19:32:51

+0

它在Linux上共享主機:) – johnnietheblack 2009-06-10 19:52:38

回答

9

默認情況下,本地郵件服務器使用Php。但是你可以在你的php.ini配置文件中指定它。

如果您預計比派遣更多的電子郵件,你可能要考慮尋找一個不同的服務器從郵寄,或替代託管

+0

我可以只指定任何服務器?例如...我可以通過Gmail的服務器發送,但保留我的域名在我的電子郵件?這可能看起來像一個愚蠢的quesiton,但在這方面im模糊 – johnnietheblack 2009-06-10 19:31:19

+0

@johnnietheblack:如果您可以訪問php.ini文件(即PHP的設置),您可以將SMTP服務器設置爲任何你想要的。 (這是絕對不是這種情況下任何形式的共享主機) – Piskvor 2009-06-10 19:51:00

4

如果需要使用需要身份驗證的外部電子郵件服務器,你會無法使用PHP mail()函數。

我建議使用:http://pear.php.net/package/Mail

1

如果你需要使用第三方電子郵件服務,我建議下探使用mail()並與SwiftMailer庫取代。這是一個功能豐富的組件(支持認證,附件,加密等),我們在幾個地方使用它。它也是免費和開源的。

4

在* nix機器上,PHP mail()函數不支持SMTP,而是使用服務器上的sendmail()或其他配置的郵件腳本。這個腳本可以通過SMTP發送,但這不是PHP中最簡單的方式(除非你已經有腳本)。要使用SMTP,我會推薦PHPMailer。我已經使用了幾年了,並且留下了深刻的印象。它支持SMTP以及許多其他協議,並且還具有其他有用的功能,例如爲HTML電子郵件添加僅文本主體並創建適當的電子郵件標題。您還可以擴展該類以設置默認值,例如SMTP服務器和電子郵件/名稱,這樣您不必在每次發送電子郵件時都設置這些默認值。它也做了很好的錯誤報告和調試。

我也推薦這個類發送1000個電子郵件。我最近在一天內做了> 5000,並沒有問題。

2

mail()確實使用php.ini中定義的設置。 Windows服務器需要一個實際的smtp服務器,而* nix服務器將使用服務器上安裝的任何mta(如果有的話)。

正如其他人所提到的,如果您確實想使用替代的smtp服務器,請使用SwiftMailer之類的替代庫。你也想確保smtp服務器速度很快。使用Gmail等SMTP服務器時,我看到速度變慢。

GoDaddy使用智能SMTP中繼,即使在GoDaddy託管的專用服務器上。限制取決於智能繼電器發送的郵件數量。

如果您有正當理由需要發送更多電子郵件,並且您可以確認您的網站不是垃圾郵件,並且所有電子郵件都是選擇加入的,但是如果您給予他們支持,則支持將會增加限制估算你需要發送多少封電子郵件。

1

我一直在使用開源項目phpmailer約七年 - 這是了不起的!您可以使用它連接到異地SMTP服務器。

2

由於這是一個古老的職位,我想如果我更新了答案將是有益的 -

這是簡單的有很多事情要做,現在比以前要:-)在PHP 4的PEAR郵件包通常已經安裝,這真的很簡單的教程顯示您需要添加到您的PHP文件的幾行代碼http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm

大多數託管公司列出您需要的SMTP設置。我使用Justhost的,他們列出他們在https://my.justhost.com/cgi/help/26(下發送郵件服務器)

4

不使用電子郵件()的PHP函數就會發送郵件只是垃圾郵件。而是使用SMTP php郵件程序功能。

爲什麼我們要使用SMTP,而不是PHP郵件():

SMTP登錄到實際帳戶上的郵件服務器,並通過SMTP發送郵件到其他郵件服務器。如果郵件服務器配置正確,您的郵件將從郵件服務器上的實際帳戶發送,並且不會被標記爲垃圾郵件。

郵件與郵件()函數一起發送與sendmail在大多數情況下發送。沒有進行身份驗證,如果您在額外的頭文件中使用「發件人:」,它幾乎總會被標記爲垃圾郵件。

這是因爲如果您在gmail中查看原始電子郵件文件,您將看到發送的標頭。您實際上是從[email protected]發送的,而不是像您告訴郵件功能那樣發送的是[email protected]。 如果使用SMTP並查看原始的電子郵件實際上是從發送[email protected]

您可以從下載SMTP類:

  1. https://code.google.com/a/apache-extras.org/p/phpmailer/source/browse/trunk/class.smtp.php?r=170
  2. http://www.phpclasses.org/package/14-PHP-Sends-e-mail-messages-via-SMTP-protocol.html
相關問題