2012-07-05 29 views
3

已經有一段時間,我已經使用我的網站的聯繫表格中的PHP郵件功能發送電子郵件。最近,我發現它停止工作。當我用我的聯繫表格發送詢問時,表示已成功發送,但沒有任何測試進入我的收件箱。PHP郵件只是突然停止工作

有沒有人在這裏面臨同樣的問題?我該如何解決這個問題?

我檢查了cpanel中的MX條目,數據是正確的。我想嘗試SMTP,但我沒有訪問信息。

對這件事有幫助嗎?

我發現的其他信息: Web服務器託管在其中一個託管公司。 郵件服務器託管在谷歌。

這裏可能是問題所在?

+0

你有沒有試過發送到其他地址(Gmail /雅虎/等)?您是否嘗試過使用telnet直接連接到您的SMTP,以查看嘗試連接時是否有問題? – andrewsi 2012-07-05 15:24:47

+0

http://postmarkapp.com/是用腳本發送郵件的絕佳解決方案。他們有一個很好用的PHP包裝器,很容易使用。 – honyovk 2012-07-05 15:24:54

+0

做什麼安德魯西建議,也登錄到WHM接口並檢查您的郵件隊列。 – 2012-07-05 15:26:20

回答

0

好吧,這裏的問題是託管服務器中的郵件進出口被打破。因此,託管支持不得不更新它並解決問題。

2

問題可能出在您的託管服務提供商身上,該服務提供商「發現」您的表單正在產生大量流量並且被阻止。

+0

我聯繫了我們的託管服務提供商,他們根本沒有給我們提供良好的支持。他們只是告訴我們檢查郵件設置和PHP郵件功能,但是我從郵件中根本沒有收到任何錯誤信息。 – user1149244 2012-07-05 15:25:00

+1

如果到目前爲止一直工作,現在它突然停止,那麼問題一定是您託管表單的服務器。你有沒有嘗試在另一臺主機上使用它來測試?你多久使用一次這種形式? – silentw 2012-07-05 15:26:13

+0

聯繫表格已工作3年。 – user1149244 2012-07-05 15:29:39

1

或者出了問題。看看/var/log/mail.*的問題。

+0

我運行該命令,但它根本沒有成功。 root @ mydomain [〜]#cd /var/log/mail.* -bash:cd:/var/log/mail.*:沒有這樣的文件或目錄 – user1149244 2012-07-05 16:08:24

+0

我的意思是一些文件,執行'ls/var/log/mail。*',你會看到日誌文件,讀取它們。執行該命令時出現以下錯誤: – pamil 2012-07-05 16:15:00

+0

。 ls /var/log/mail.* /bin/ls:/var/log/mail.*:沒有這樣的文件或目錄 – user1149244 2012-07-06 17:24:57

1

您是否正確驗證mail()函數返回的內容?

這可能是一個好主意,檢查你的error_log只是爲了確保它在PHP中沒有。如果可以查看郵件是否發送(使用郵件功能創建一個小程序),請嘗試將代碼放在另一臺服務器上。如果是這樣,那麼它最有可能是你的ISP。

+0

我已經用另一臺服務器測試過它,並且成功了。 – user1149244 2012-07-05 15:40:12

+0

那肯定是你的服務器。檢查您的管理員,或檢查/ var/log/mail – Dynelight 2012-07-05 18:50:11

1

這裏是你如何可以直接連接到SMTP:

$smtp = fsockopen("localhost", 25, $errno, $errstr, 15); 
if(!$smtp) { 
    echo "failed"; 
} 
else { 
    stream_set_timeout($smtp, 0, 80000); 
    fwrite($smtp, "HELO domainname.com\r\n"); 
    stream_set_blocking($smtp, 0); 
    fwrite($smtp, "MAIL FROM:<".$from.">\r\n"); 
    fwrite($smtp, "RCPT TO:<$to>\r\n"); 
    fwrite($smtp, "DATA\r\n"); 
    fwrite($smtp, "Date: ".date("r")."\r\n"); 
    fwrite($smtp, "From: <".$from_address.">\r\n"); 
    fwrite($smtp, "Reply-to: $replyto\r\n"); 
    fwrite($smtp, "Subject: Test\r\n"); 
    fwrite($smtp, "To: $to\r\n"); 
    $outMsg .= "Whatever your email body is, then end it with a period on a new line\r\n.\r\n"; 
    $bitesWritten = fwrite($smtp, $outMsg); 
    echo "Wrote $bitesWritten of " strlen($outMsg); 
} 
+0

嗨凱爾,謝謝你的擡頭。試過你的代碼,但我得到這個錯誤無法連接。也許網絡服務器真的有問題。 – user1149244 2012-07-05 16:22:10

+0

你有shell嗎? – 2012-07-05 16:33:57

+0

是的,我試圖telnet到,我得到了同樣的錯誤。 http://pastebin.com/QTqbDPzN – user1149244 2012-07-05 16:47:39