2013-07-16 13 views
5

Próbuję google cały ranek i myślę, że potrzebuję teraz Stackoverflow!Błąd PHPMailer: SMTP -> BŁĄD: Nie udało się połączyć z serwerem

napisałem prosty skrypt do wysyłania poczty (z Hotmail do Gmaila) ale ja dostać ten błąd:

SMTP -> Błąd: Nie można połączyć się z serwerem: Próba połączenia nie powiodła się, ponieważ połączona strona nie nie odpowiada poprawnie po pewnym czasie lub nawiązane połączenie nie powiodło się, ponieważ podłączony host nie odpowiedział. (10060) Połączenie SMTP Connect() nie powiodło się. Błąd

Jest to kod:

<?php 
require_once("../includes/phpMailer/class.phpMailer.php"); 
require_once("../includes/phpMailer/class.smtp.php"); 


$to_name = "RECEIVER NAME"; 
$to = "[email protected]"; 


$subject = "Mail test at " . strftime("%T", time()); 

$message = "This is a test message"; 
$message = wordwrap($message, 70); 


$from_name = "MY NAME"; 
$from = "[email protected]"; 


$mail = new PHPMailer(); 

$mail->IsSMTP(); 
$mail->SMTPDebug = 2; 
$mail->Host = "smtp.live.com"; 
$mail->Port = 25; 
$mail->SMTPAuth = true; 
$mail->Username = "MY USERNAME (hotmail)"; 
$mail->Password = "MY PASSWORD (hotmail)"; 


$mail->FromName = $from_name; 
$mail->From = $from; 
$mail->AddAddress($to, $to_name); 
$mail->Subject = $subject; 
$mail->Body = $message; 

$result = $mail->Send(); 

echo $result ? 'Sent' : 'Error'; 

?> 

Kolejna informacja jest, że nawet funkcja standardową pocztę() pracował, a także sprawdzanie php informacji znalazłem to:

sendmail_from - mój PROPER Poczta (hotmail)

sendmail_path - żadna wartość

SMTP - localhost

smtp_port - 25

Dziękujemy!

+0

to Twoja firma hostingowa/isp blokująca porty? – fortune

Odpowiedz

4

Wierzę, że port 25 jest zablokowany na stronie smtp.live.com. Nie mogę się stąd również połączyć z smtp.live.com:25. Zamiast tego użyj portu 587 z TLS. Tak, to byłoby:

$mail->Port = 587; 
$mail->SMTPSecure = 'tls'; 
+0

staram, ale ja dostać dwa błędy: to dla portu: SMTP -> Z serwera: 220 BLU0-SMTP125.phx.gbl Microsoft ESMTP usługa poczty [...] zamykanie kanału transmisyjnego SMTP connect() nie powiodło się . Błąd I TLS: Uwaga: stream_socket_enable_crypto() [streams.crypto] Ten strumień nie obsługuje SSL/kryptograficznych C: \ wamp \ WWW \ photo_gallery \ obejmuje \ PHPMailer \ class.smtp.php na linii 254 A także ten błąd na końcu: KLIENT -> SMTP: zamknij SMTP -> Z SERWERA: SMTP -> BŁĄD: odrzucono polecenie serwera SMTP Zakończ polecenie: Połączenie SMTP Connect() nie powiodło się. Błąd – johnnyfittizio

+0

wygląda na to, że nie masz zainstalowanych na serwerze odpowiednich bibliotek szyfrowania dla TLS. Będziesz potrzebował TLS lub SSL, aby wysłać przez smtp.live.com. Jak obejść, masz konto Gmail? Jeśli tak, możesz wysłać przez smtp.gmail.com, bez szyfrowania SSL lub TLS, na porcie 25. – mti2935

+0

Tak, mam konto w Gmailu. Czy sugerujesz spróbować odwrotnie, aby wysłać z Gmail do Hotmail? – johnnyfittizio

2

Znalazłem rozwiązanie tego problemu, spróbuj tego

sprawdzić, czy PHP używa OpenSSL rozszerzenie czy nie ...!

  1. Edycja php.ini z zainstalowanym folderze php
  2. Szukaj extension = php_openssl.dll
  3. Początkowy będzie wyglądać następująco ; extension = php_openssl.dll
  4. Usunąć ';' i będzie to wyglądać tak extension = php_openssl.dll
  5. Jeśli nie można znaleźć rozszerzenie = php_openssl.dlldodać ten wiersz rozszerzenie = php_openssl.dll.
  6. Następnie uruchom ponownie serwer Xampp lub LAMP lub APACHE (w zależności od tego, którego z nich używasz).

Nadzieja ta metoda powinna rozwiązać problem ...

+1

Uff, dzięki! Ta odpowiedź uratowała mi mnóstwo kłopotów. Rozszerzenie PHP OpenSSL nie jest domyślnie włączone na świeżej instalacji, apparantly (CentOS 6, PHP 5.6). – zmippie

0

Możesz sprawdzić obsługiwanych portów. Na przykład mój host obsługuje smtp przez porty 25, 3535 i 80.
Używanie portu 80 działa dla mnie

Powiązane problemy