2013-07-16 45 views
0

我在Linux網站託管軟件包中使用PHP創建了一個網站。通常我會收到通過PHP Mail()函數生成的聯繫表單發送的電子郵件。但這一次,對我來說這是一個奇怪的例子。
我的客戶公司有一個郵件服務器。如果我通過Gmail上的個人電子郵件發送電子郵件,他們會將其發送到他們的郵件服務器上。但是,當我通過聯繫表單發送電子郵件時,電子郵件會轉到網站託管軟件包上的webmail。
我已經刪除了此主機上的所有電子郵件帳戶,我也從中刪除了DNS MX記錄,但仍無法接收通過公司郵件服務器帳戶上的聯繫表單發送的電子郵件。由於其他郵件服務器無法獲取由PHP郵件功能發送的電子郵件

我該如何解決這個問題?

+0

Web服務器是運行UNIX還是Windows? PHP配置了sendmail還是SMTP服務器? – rcambrj

+0

它在Unix上運行,正如我所說的,聯繫表單使用PHP Mail()函數發送電子郵件。 –

回答

0

首先要確定的是你如何發送電子郵件(sendmail或SMTP)。然後,無論您的電子郵件是a)根本沒有發送或b)被目標郵件服務器拒絕。

我會檢查所有可用的日誌(源和目標郵件服務器和守護進程)。看看郵件()本身是否出錯。嘗試直接使用sendmail/smtp。

如果目標服務器根據垃圾郵件分數拒絕郵件,請嘗試設置SPF records以使Web服務器能夠合法發送郵件

1

從您的問題看來,網頁截圖供應商也是您的電子郵件主機提供商。你解釋問題的方式使我得出結論,你的PHP腳本使用mail()函數,它將在內部調用MTA(如sendmail)來發送電子郵件。

現在看來發生的事情是,PHP通過mail()函數發送郵件,該函數將它傳遞給本地MTA(如sendmail),它正在檢查本地配置。在本地配置中,似乎將收件人域設置爲本地域,並將郵件本地發送給用戶。在這種情況下,電子郵件甚至不會離開webhoster的服務器。因爲這不是你所期望的,如果你對MTA的配置沒有影響(我認爲你沒有),那麼你有兩種可能性。

  1. 我會建議(如果可能)不使用mail()函數。已準備好使用SMTP類,它將連接到您的coice的SMTP服務器以發送電子郵件到。這樣你就可以避免這個問題。你應該在PHP Classes Repository找到一些東西。

  2. 如果可能,請將電子郵件發送到其他域。這樣MTA必須檢查DNS並將電子郵件發送到另一個SMTP服務器進行傳送。

相關問題