2014-08-31 48 views
0

我有一個創建的腳本,用於在下訂單時向其發送訂單確認郵件。這是一個簡單的PHP郵件()腳本。這也是在一個共享的Linux主機上完成的。在Linux上使用PHP發送電子郵件的問題

我的問題是,劇本將被接收10次,然後它將停止長時間接收(通過任何電子郵件帳戶),然後突然他們將開始再次收到。

我已經與我的主人聯繫過這個問題,他們告訴我一些我認爲由於無知而錯了的東西。首先是電子郵件可能被電子郵件提供商阻止。如果是這樣的話,我不會想象有10個會在3個不同的電子郵件服務器(aol,gmail,hotmail)上通過,然後突然停止。他們還說,他們的電子郵件分批發出,我不相信這些郵件適用於客戶腳本。如果是這種情況,當我一半的時間運行我的腳本時,他們不會立即收到。另外,在這些幹噴出的郵件沒有被任何主機接收時,這些電子郵件從來沒有進來。第三,他們告訴我使用他們的webformmailer.php將使用他們的批量電子郵件系統。問題是,他們的webformmailer只允許我發送電子郵件到一個預定的電子郵件(因爲我必須在控制面板中設置它)。

所以我有幾個問題:這個問題有多少與我的主機,腳本和電子郵件提供程序有關?什麼是一些修復,使電子郵件更可靠?我一直在試用一些像swiftmailer這樣的電子郵件庫,但他們似乎沒有改善這種情況。

+0

如果郵件服務器在短時間內收到大量電子郵件/如果用戶將您的電子郵件標記爲垃圾郵件,則可以自由地將您的電子郵件標記爲垃圾郵件 – user3791372 2014-08-31 16:49:31

+0

@ user3791372我明白,但我已將它們專門標記爲信任3個獨立的供應商,他們都收到他們完全罰款,然後都停止接收他們在同一時間,並開始在同一時間再次接收他們,讓我相信這是我的主機扼殺他們。 – sharf 2014-08-31 17:11:03

回答

0

如果你是一個共享的主機上,不要使用mail(),它永遠不會工作,你所希望的方式有以下幾個原因:

  • 主機通常放在郵件的數量限制,您可以發送,這可能是全球共享服務器的每個人。
  • 較大的電子郵件服務提供商可能已經看到您現在使用的IP上的垃圾郵件,並且可能會限制您的速度。
  • 大型電子郵件提供商可能也會將您的IP列入黑名單,因此某些電子郵件甚至永遠不會到達。

如果你有機會,請檢查你的web服務器錯誤日誌,mail()將記錄任何錯誤響應存在,所以你可以看到,如果你正在從主機TEMPORARILY DEFERRED你發送的郵件。

我的建議是使用SMTP連接到可以發送消息的電子郵件主機或其他外部電子郵件服務。

+0

我的主人向我發誓他們沒有任何限制,這是我認爲實際發生的事情。如果電子郵件提供商阻止了它,爲什麼它們在3個電子郵件提供商(在他們確實打了一次垃圾郵件並且我必須制定一個規則允許他們)時完全沒問題,然後突然停止所有3個半小時或所以?另外,我將如何通過SMTP發送郵件在PHP? – sharf 2014-08-31 15:42:48

+0

如果收件人的提供商在默認情況下發送垃圾郵件,它可能會通過更加侵入性的垃圾郵件過濾器被捕獲。那裏有幾個庫,試一試[SwiftMailer](http://swiftmailer.org/)。 – SamT 2014-08-31 16:10:56

+0

我一直在嘗試SwiftMailer,但我的理解是,它不能用sendmail在Linux上執行SMTP,是不正確的?你能指出我的方向嗎? – sharf 2014-08-31 16:40:27

0

這聽起來像您的託管服務提供商設置每分鐘/小時或其他東西的最大數量的電子郵件。它看起來像是被提供商服務器阻止的。

所以一個解決方案是隻使用其他smtp服務器而不是mail()默認值。

+0

正如我在對SamT的評論中所說的,我的提供者發誓他們並不限制它,但我不相信它們。我將如何通過SMTP發送電子郵件在PHP? – sharf 2014-08-31 15:44:09