Pregunta

Aquí está mi código:

<?php
require_once 'Swift/lib/swift_required.php';

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465)
  ->setUsername('me@ff.com')
  ->setPassword('pass');

$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance('Wonderful Subject')
  ->setFrom(array('me@ff.com' => 'MY NAME'))
  ->setTo(array('you@ss.com' => 'YOU'))
  ->setBody('This is the text of the mail send by Swift using SMTP transport.');
//$attachment = Swift_Attachment::newInstance(file_get_contents('path/logo.png'), 'logo.png');  
//$message->attach($attachment);
$numSent = $mailer->send($message);
printf("Sent %d messages\n", $numSent);
?>

Después de ejecutar dio este mensaje ...

  

Fatal error: Excepción no detectada 'Swift_TransportException' con el mensaje 'esperado código de respuesta 220 pero el código tiene '', con el mensaje ''' en /home/sitenyou/public_html/Swift/lib/classes/Swift/Transport/AbstractSmtpTransport.php : 406

Stack trace: 
#0 /home/sitenyou/public_html/Swift/lib/classes/Swift/Transport/AbstractSmtpTransport.php(299): Swift_Transport_AbstractSmtpTransport->_assertResponseCode('', Array) 
#1 /home/sitenyou/public_html/Swift/lib/classes/Swift/Transport/AbstractSmtpTransport.php(107): Swift_Transport_AbstractSmtpTransport->_readGreeting() 
#2 /home/sitenyou/public_html/Swift/lib/classes/Swift/Mailer.php(74): Swift_Transport_AbstractSmtpTransport->start() 
#3 /home/sitenyou/public_html/sgmail.php(16): Swift_Mailer->send(Object(Swift_Message)) 
#4 {main} thrown in /home/sitenyou/public_html/Swift/lib/classes/Swift/Transport/AbstractSmtpTransport.php on line 406
¿Fue útil?

Solución

SMTP de Gmail requiere cifrado. Uso:

Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl");

Otros consejos

no le falta el parámetro SSL, debe ser algo así

Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl")

Probado y trabajo fino

Swift SmtpTransport - Código (enviar un correo electrónico)

El SMTP de GMAIL es: smtp.googlemail.com

El código completo:

<?php
$pEmailGmail = 'xxxx@gmail.com';
$pPasswordGmail = '********';
$pFromName = 'MundialSYS.com'; //display name

$pTo = 'xxxxxx@xxxx.xxx'; //destination email
$pSubjetc = "Hello MundialSYS"; //the subjetc 
$pBody = '<html><body><p>Hello MundialSYS</p></html></body>'; //body html

$transport = Swift_SmtpTransport::newInstance('smtp.googlemail.com', 465, 'ssl')
            ->setUsername($pEmailGmail)
            ->setPassword($pPasswordGmail);

$mMailer = Swift_Mailer::newInstance($transport);

$mEmail = Swift_Message::newInstance();
$mEmail->setSubject($pSubjetc);
$mEmail->setTo($pTo);
$mEmail->setFrom(array($pEmailGmail => $pFromName));
$mEmail->setBody($pBody, 'text/html'); //body html

if($mMailer->send($mEmail) == 1){
    echo 'send ok';
}
else {
    echo 'send error';
}
?>

he logrado conseguir este trabajo sin el SSL, aquí es cómo:

$transport = Swift_SmtpTransport::newInstance('tls://smtp.gmail.com', 465)
            ->setUsername('contact@columbussoft.com')
            ->setPassword('password');
$mailer = Swift_Mailer::newInstance($transport);

$message = Swift_Message::newInstance($subject)
            ->setFrom(array($emailTo=>$name))
            ->setTo(array($emailTo=>'Neo Nosrati'))
            ->addPart($body,'text/plain')
            ->setReturnPath('other@columbussoft.com');

No se puede estar seguro, pero creo que el puerto de Gmail es 587 usando TLS, que no es SSL, pero una versión más reciente de ella. Usted debe comprobar en eso, porque creo que está colocando el código de construcción mal.

Mucha suerte!

Estoy usando los "mensajes Swift Mailer" bulto en laravel 3 y que tiene el mismo problema. Después de algunas pruebas, en mi caso, la solución fue establecer la misma dirección de correo electrónico que he usado en la autenticación SMTP en el "de" parámetro.

Yo estaba tratando de utilizar una dirección diferente y que estaba provocando la "código de respuesta esperada SwiftMailer 220 pero consiguió código con el mensaje" de error.

Espero que ayude.

Tengo mismo error antes y he añadido parámetro "ssl" en Swift_SmtpTransport :: newInstance ( 'smtp.gmail.com', 465 "ssl") como dijeron osos.

FUNCIONA !! gracias ..: D

Este es mi código:

<?php
require_once 'swift/lib/swift_required.php';

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl")
  ->setUsername('XXXXXXX@gmail.com')
  ->setPassword('XXXXXXX');

$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance('THIS IS THE SUBJECT')
  ->setFrom(array('XXXXXXX@gmail.com' => 'YOUR NAME'))
  ->setTo(array('XXXXXXX@gmail.com' => 'YOU'))
  ->setBody('This is the text of the mail send by Swift using SMTP transport.');
//$attachment = Swift_Attachment::newInstance(file_get_contents('path/logo.png'), 'logo.png');  
//$message->attach($attachment);
$numSent = $mailer->send($message);
printf("Sent %d messages\n", $numSent);
?>

Para aplicaciones de Google, además de establecer que el puerto 465 y SSL como se recomienda en la respuesta aceptada, puede que tenga que enable permitir establecer aplicaciones menos seguras , según https://stackoverflow.com/a/25238515/ 947370

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top