php - example - swiftmailer requirements
tratando de enviar correo usando swift mailer, gmail smtp, php (8)
Aquí está mi código:
<?php
require_once ''Swift/lib/swift_required.php'';
$transport = Swift_SmtpTransport::newInstance(''smtp.gmail.com'', 465)
->setUsername(''[email protected]'')
->setPassword(''pass'');
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance(''Wonderful Subject'')
->setFrom(array(''[email protected]'' => ''MY NAME''))
->setTo(array(''[email protected]'' => ''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 OBTUVO ESTE ERROR ...
Error fatal: excepción no capturada ''Swift_TransportException'' con el mensaje ''Código de respuesta esperada 220 pero obtuvo el código'' '''', 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
El SMTP de GMail requiere cifrado. Utilizar:
Swift_SmtpTransport::newInstance(''smtp.gmail.com'', 465, "ssl");
Estoy usando el paquete "Messages Swift Mailer" en Laravel 3 y tengo 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 utilicé en la autenticación SMTP en el parámetro "de".
Intentaba usar una dirección diferente y eso desencadenaba el error "código de respuesta esperado de carga rápida 220 pero obtuvo código con mensaje" .
Espero que ayude.
He logrado que esto funcione sin SSL, así es cómo:
$transport = Swift_SmtpTransport::newInstance(''tls://smtp.gmail.com'', 465)
->setUsername(''[email protected]'')
->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(''[email protected]'');
No puedo estar seguro, pero creo que el puerto de Gmail es 587 usando TLS, que no es SSL, sino una versión más nueva de él. Debería verificar eso, porque creo que está colocando el código de construcción incorrecto.
¡La mejor de las suertes!
Obtuve el mismo error antes y agregué el parámetro "ssl" en Swift_SmtpTransport :: newInstance (''smtp.gmail.com'', 465, "ssl") como dijo 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(''[email protected]'')
->setPassword(''XXXXXXX'');
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance(''THIS IS THE SUBJECT'')
->setFrom(array(''[email protected]'' => ''YOUR NAME''))
->setTo(array(''[email protected]'' => ''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 las aplicaciones de Google, además de configurar el puerto 465 y ssl como se recomienda en la respuesta aceptada, es posible que deba habilitar la configuración de permitir la configuración de aplicaciones menos seguras , de acuerdo con https://.com/a/25238515/947370
Swift SmtpTransport - Código (enviar un correo electrónico)
El SMTP de GMAIL es: smtp.googlemail.com
El código completo:
<?php
$pEmailGmail = ''[email protected]'';
$pPasswordGmail = ''********'';
$pFromName = ''MundialSYS.com''; //display name
$pTo = ''[email protected]''; //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'';
}
?>
falta el parámetro ssl, debería ser algo así
Swift_SmtpTransport::newInstance(''smtp.gmail.com'', 465, "ssl")
Probado y funciona bien