2013-01-21 12 views
1

我正在嘗試從幾小時以後才能在實時服務器上獲得一個郵件。它在我的本地主機上按照預期工作。Php SMTP郵件發送只能在本地使用

我使用的是完全相同的外部SMTP服務器,相同的PHP源代碼和相同的數據庫表。 PHP版本和MySQL版本在線和localhost完全相同。

我測試了一切。沒有物理髮送過程,一切都如同假裝一樣工作。它不會發送(或接收)電子郵件。我還去了systemadministrator,讓他檢查是否有任何郵件被封鎖或內部服務器錯誤,但這裏也很好。

我真的嘗試了一切我能想到的,但我沒有找到問題。有沒有人知道我可以嘗試接下來的事情?

這是怎麼了物理髮送貌似功能:

private function sendPhysical($sReciepient) { 
    if ($oSmtpIn = fsockopen(SMTPSERVER, SMTPPORT)) { 
     fputs($oSmtpIn, "EHLO " . SMTPSERVER . "\r\n"); 
     $aCodes["hello"] = fgets($oSmtpIn, 1024); 

     fputs($oSmtpIn, "auth login\r\n"); 
     $aCodes["res"] = fgets($oSmtpIn, 1024); 

     fputs($oSmtpIn, $this->encodeUser() . "\r\n"); 
     $aCodes["user"] = fgets($oSmtpIn, 1024); 

     fputs($oSmtpIn, $this->encodePassword() . "\r\n"); 
     $aCodes["pass"] = fgets($oSmtpIn, 256); 

     fputs($oSmtpIn, "MAIL FROM: <" . $this->sFrom . ">\r\n"); 
     $aCodes["From"] = fgets($oSmtpIn, 1024); 

     fputs($oSmtpIn, "RCPT TO: <" . $sReciepient . ">\r\n"); 
     $aCodes["To"] = fgets($oSmtpIn, 1024); 

     fputs($oSmtpIn, "DATA\r\n"); 
     $aCodes["data"] = fgets($oSmtpIn, 1024); 

     fputs($oSmtpIn, $this->generateHeader($sReciepient) . "\r\n\r\n" . $this->returnCompiledTemplate() . "\r\n.\r\n"); 
     $aCodes["send"] = fgets($oSmtpIn, 256); 

     fputs($oSmtpIn, "QUIT\r\n"); 
     fclose($oSmtpIn); 
    } else { 
     $aCodes["connection"] = false; 
    } 
    return $aCodes; 
} 

有人可能的解決方案?我完全困惑,因爲它在本地主機上工作,並且它已經在在線服務器上工作,直到上週...

+2

那麼,實際的錯誤是什麼?你看到/得到什麼?很可能你必須看看網絡層面。可能你可以在服務器響應中發現一些問題。我敢打賭,這與中繼有關。難道你是使用你的ISPs smtp服務器?如果是這樣:一箇中繼問題,服務器規則不接受任何來自外部的人(您的在線服務器)通過它傳遞消息。 – arkascha

+0

除了郵件沒有發送外,我沒有看到任何實際的錯誤。不,我使用我實習生公司的smtp服務器(我還是學生)。系統管理員檢查了日誌,但沒有發現任何東西..:/ –

+1

突然間沒有任何工作停止。如果你的代碼沒有改變,那麼它一定是發生改變的網絡的其餘部分。正如已經指出的那樣,繼電器/ MTA? – SparKot

回答

0

這是非常棘手的太看看這個代碼塊有什麼問題,但如果你不想有通過php發送郵件很麻煩,請嘗試PHPMailer。