2012-11-21 30 views
10

SMTP Error: Could not connect to SMTP host. Message could not be sent.SMTP ana makinesine bağlanılamadı

Mailer Error: SMTP Error: Could not connect to SMTP host.

PHPMailer'in CentOS altında çalışmasını sağlamanın bir yolunu bulamıyorum. Mail, XAMPP ile Windows altında gayet iyi çalışıyor, ancak Linux altında her zaman bu hatayı alıyorum.

SMTP sunucusu 25 numaralı bağlantı noktasında dinleme yapan bir Lotus Domino'dur, CentOS makinesinde hiç güvenlik duvarı yok ve garip olan şey bile mail() işlevinin çalışmadığıdır. Hiçbir şey döndürmez (Windows 1'de geri dönerken). CentOS sunucusu üzerinden telnet ile bir e-posta gönderirseniz, sadece iyi çalışır, bu yüzden bir ağ sorunu olduğunu düşünmüyorum. PHP ile ilgili olmalı ama nasıl olduğunu bilmiyorum.

<?php 
require("class.phpmailer.php"); 
$mail = new PHPMailer(); 
$mail->IsSMTP(); 
$mail->Host = "192.168.x.x"; 
$mail->SMTPAuth = false; 
$mail->From = "[email protected]"; 
$mail->FromName = "XXX"; 
$mail->AddAddress("[email protected]"); 
$mail->IsHTML(true); 
$mail->Subject = "Test"; 
$mail->Body = "Test"; 
if(!$mail->Send()) 
{ 
    echo "Message could not be sent. <p>"; 
    echo "Mailer Error: " . $mail->ErrorInfo; 
    exit; 
} 
echo "Message has been sent"; 
?> 

Yalnızca XAMPP (Windows) üzerindeki çalışmaların üzerindeki açıklamayı netleştirmek için.

Ben PHPMailer hatayı debug ve hata burada (class.smtp.php yöntemi Connect()) olur:

$this->smtp_conn = @fsockopen($host, // the host of the server 
          $port, // the port to use 
          $errno, // error number if any 
          $errstr, // error message if any 
          $tval); // give up after ? secs 
// verify we connected properly 
if(empty($this->smtp_conn)) { 
    $this->error = array("error" => "Failed to connect to server", 
         "errno" => $errno, 
         "errstr" => $errstr); 
    if($this->do_debug >= 1) { 
    echo "SMTP -> ERROR: " . $this->error["error"] . ": $errstr ($errno)" . $this->CRLF . '<br />'; 
    } 
    return false; 
} 

o Soket açamıyor gibi görünüyor ...

UPDATE: $ mail-> SMTPDebug = 2;

SMTP -> ERROR: Failed to connect to server: Permission denied (13)

+2

Giriş kimlik bilgilerini belirtmeyi denediniz mi? –

+0

Yoktur. Bu arada ne demek istiyorsun? Onları "" olarak mı kastediyorsun? – raz3r

+0

FYI denendi '$ mail-> SMTPAuth = true; $ mail-> Kullanıcı Adı = ""; $ mail-> Şifre = ""; şimdi, hayır şans. – raz3r

cevap

10

Sen SMTPDebug özelliğiyle ayıklama modunu etkinleştirebilirsiniz, ör .: ekrana yankılandı edilecektir

$mail = new PHPMailer(); 
// 1 = errors and messages 
// 2 = messages only 
$mail->SMTPDebug = 2; 

Hata mesajları: Alvaro önerdiği gibi bu çıktıyı üretti.

Güncelleme:

fsockopen() kullanan bir izni reddedildi hata mesajı yuva açmaya izin verilmez gibi kullanıcı PHP çalıştığını göstermektedir. Güvenlik duvarı olmadığını iki kez kontrol ettiyseniz, bu bir SELinux problem olabilir: -? Bazı arştırma SELinux'un iletişimi

SELinux'un aktive edilir ve varsayılan olarak yapılandırılır engelliyor çıktı sonra

+1

Burada güzel yakala, şimdi bu hata veriyor 'SMTP -> HATA: Sunucuya bağlanılamadı: İzin reddedildi (13) '. Linux kullanıcısının izinleri ile ilgili olabilir mi? – raz3r

+2

Siz bir dehasınız, bağlantınızda bulduğum komutu kullandım ve işe yaradı. Dolayısıyla, ağa bağlı bir sorun çıktı. Eh şimdi gelecekte aynı hatayı alırsam ne yapacağımı biliyorum! Hepinize teşekkür ederim, yardım için teşekkür ederiz;) – raz3r

30

OS CentOS 6.3

e-postaları

gönderilemedi. Bu gibi SELinux, Apache'nin (httpd, phpmailer) sendmail işlevini kullanmasına ve herhangi bir ağ bağlantısı yapmasına izin vermez.

Getebool komutunu kullanarak, httpd demon'un ağ üzerinden bir bağlantı kurmasına ve bir e-posta göndermesine izin verilip verilmediğini kontrol edebiliriz.

getsebool httpd_can_sendmail 
getsebool httpd_can_network_connect 

Bu komut bir boolean'ı açar veya kapatır. onun off isterse şunları kullanarak bunu ayarlayabilirsiniz:

sudo setsebool -P httpd_can_sendmail 1 
sudo setsebool -P httpd_can_network_connect 1 

Artık php test edebilirsiniz, kod eğer SendMail iş düzgün ya da görmek için.

+0

Teşekkürler, sorun tarafından çözüldü – Piyuesh

+0

Bugün benim kahramanımsın. –

+0

Siz efendim beni kurtardınız. Ayrıca, setebool komutlarının bazı komutları CENTOS'un bazı sürümlerinde biraz yavaşlayabileceğine işaret etmek istiyorum, böylece sadece komutları çalıştırırken sabırlı olun. – JoeMoe1984

İlgili konular