2012-11-26 27 views
6

Possible Duplicate:
Having trouble with PHPMailerPHPMailer wysłać gmail Timeout SMTP

Istnieje wiele podobnych pytań, ale żaden z nich nie pomógł mi.

Oto mój skrypt, który jest wyposażony w exmaples PHPMailer:

require_once('../class.phpmailer.php'); 
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded 

$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch 

$mail->IsSMTP(); // telling the class to use SMTP 

try { 
    $mail->SMTPDebug = 2;      // enables SMTP debug information (for testing) 
    $mail->SMTPAuth = true;     // enable SMTP authentication 
    $mail->SMTPSecure = "ssl";     // sets the prefix to the servier 
    $mail->Host  = "smtp.gmail.com";  // sets GMAIL as the SMTP server 
    $mail->Port  = 465;     // set the SMTP port for the GMAIL server 
    $mail->Username = "[email protected]"; // GMAIL username 
    $mail->Password = "yourpassword";   // GMAIL password 
    $mail->AddReplyTo('[email protected]', 'First Last'); 
    $mail->AddAddress('[email protected]', 'John Doe'); 
    $mail->SetFrom('[email protected]', 'First Last'); 
    $mail->AddReplyTo('[email protected]', 'First Last'); 
    $mail->Subject = 'PHPMailer Test Subject via mail(), advanced'; 
    $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically 
    $mail->MsgHTML("some message"); 
    $mail->Send(); 
    echo "Message Sent OK</p>\n"; 
} catch (phpmailerException $e) { 
    echo $e->errorMessage(); //Pretty error messages from PHPMailer 
} catch (Exception $e) { 
    echo $e->getMessage(); //Boring error messages from anything else! 
} 

i tu jest błąd:

SMTP -> ERROR: Failed to connect to server: Connection timed out (110) 
SMTP Error: Could not connect to SMTP host. 

na wiele pytań zostało wspomniane, aby umożliwić php_openssl extenstion który został aktywowany w moim serwerze. Używam PHPMailer wersji 5.1

też nie ma żadnego problemu z moim port serwera 25 i prosty mail() funkcja działa poprawnie

dzięki za pomoc

+0

Pinguj host \ port z tego samego serwera, na wypadek, gdyby był to problem sieciowy –

+0

@Dagon: pingowanie bez problemu. Próbowałem również na localhost, i jest ten sam problem. Wysłałem wiele e-maili za pomocą tego podejścia kilka miesięcy temu i działało dobrze, ale teraz zapomniałem, jak ... – Aliweb

Odpowiedz

9

Oto przykład roboczych:

require_once ('class.phpmailer.php'); // Add the path as appropriate 
    $Mail = new PHPMailer(); 
    $Mail->IsSMTP(); // Use SMTP 
    $Mail->Host  = "smtp.gmail.com"; // Sets SMTP server 
    $Mail->SMTPDebug = 2; // 2 to enable SMTP debug information 
    $Mail->SMTPAuth = TRUE; // enable SMTP authentication 
    $Mail->SMTPSecure = "tls"; //Secure conection 
    $Mail->Port  = 587; // set the SMTP port 
    $Mail->Username = '[email protected]'; // SMTP account username 
    $Mail->Password = 'MyGmailPassword'; // SMTP account password 
    $Mail->Priority = 1; // Highest priority - Email priority (1 = High, 3 = Normal, 5 = low) 
    $Mail->CharSet  = 'UTF-8'; 
    $Mail->Encoding = '8bit'; 
    $Mail->Subject  = 'Test Email Using Gmail'; 
    $Mail->ContentType = 'text/html; charset=utf-8\r\n'; 
    $Mail->From  = '[email protected]'; 
    $Mail->FromName = 'GMail Test'; 
    $Mail->WordWrap = 900; // RFC 2822 Compliant for Max 998 characters per line 

    $Mail->AddAddress($ToEmail); // To: 
    $Mail->isHTML(TRUE); 
    $Mail->Body = $MessageHTML; 
    $Mail->AltBody = $MessageTEXT; 
    $Mail->Send(); 
    $Mail->SmtpClose(); 

    if ($Mail->IsError()) { 
    echo "ERROR<br /><br />"; 
    } 
    else { 
    echo "OK<br /><br />"; 
    } 
+0

działa dobrze! dzięki! ale czy istnieje takie samo rozwiązanie do wysyłania poczty za pomocą kont yahoo? – Aliweb

+0

Wystarczy zmodyfikować parametry SMTP. Nie znam ich, ale możesz je znaleźć w Yahoo. –

Powiązane problemy