2013-03-25 157 views
1

我有用於測試目的的Windows上的Apache w/php。 我的生產CentOS 6.4服務器上也有Apache w/php。PhpMailer能夠從Windows發送郵件,但不能發送郵件

我能夠使用PHPMailer在我的Windows服務器上完美髮送電子郵件。 但是,我無法在我的centos服務器上發送它。

這是我的代碼:

require_once('phpmailer/class.phpmailer.php'); 
    $mail = new PHPMailer(); 
    $mail->IsSMTP(); 
    $mail->SMTPDebug = 1; 
    $mail->SMTPAuth = true; 
    $mail->Host = 'mail.example.com'; 
    $mail->Port = 25; 
    $mail->Username = "[email protected]"; 
    $mail->Password = "secret"; 
    $mail->SMTPSecure = 'tls';  
    $mail->SetFrom('[email protected]', "$name"); 
    $mail->Subject = "$subj"; 
    $mail->Body = $body; 
    $mail->AddAddress("[email protected]"); 
    if(!$mail->Send()) { 
     $error = 'Mail error: '.$mail->ErrorInfo; 
     echo "We're sorry, however, an error has occurred. You may manually e-mail us at [email protected]"; 
     return false; 
    } else { 
     echo "Thanks! Your message was successfully sent."; 
     return true; 
    } 
?> 

再次,它完美的作品在我的Windows Apachhe。 但是,在CentOS上發生以下錯誤。

SMTP -> ERROR: Failed to connect to server: Connection timed out (110) <br />The following From address failed: [email protected] : Called Mail() without being connected 

我測試過防火牆,我不認爲這是問題所在。我甚至完全關閉它(測試),它仍然給我這個錯誤。

我有openssl安裝並啓用我的PHP。

任何想法?

回答

2

我從消息瞭解什麼是

  • 您的客戶端無法到達郵件服務器或
  • 一段時間後,郵件服務器關閉連接,客戶端發送的所有命令之前。

如果我是你,我會嘗試了以下的順序:

  1. 坪mail.example.com,以確保我可以解析域。
  2. Telnet到mail.example.com的第25個端口,以確保我的服務器可以連接到郵件服務器。
  3. 使用telnet或其他郵件客戶端測試郵件服務器。

你應該被困在這些步驟之一,它應該有助於解決這個問題。

+0

你好,我只是做了測試,才能夠閱讀你的文章。 然而,你是對的,我無法telnet到端口25. 我可以telnet mail.example.com 465,但是,我無法telnet mail.example.com 25 我問過我的vps託管提供商,他們說他們沒有阻止任何東西,也許它是電子郵件提供商? 我可以在我的其他主機上telnet mail.exmaple.com 25。 – JonJon2244 2013-03-25 03:44:04

+0

您必須連接端口25才能將郵件放入郵件服務器。所以這就是問題所在。一些ISP阻止端口25以防止垃圾郵件。你可以嘗試587而不是25. – Tim 2013-03-25 03:46:22

+0

587被拒絕。 465的作品,但是,它導致了我的BB很多錯誤,所以需要得到檢查。 任何一種方式,26作品,而不是25. 所以基本上,解決方案是使用26/465。 也,因爲你是唯一一個試圖幫助,最好的答案是你的先生。 – JonJon2244 2013-03-25 04:03:47