template mail example enviar php email laravel swiftmailer

php - enviar - mail::send laravel example



Se esperaba el código de respuesta 220 pero se obtuvo el código "", con el mensaje "" en Laravel (7)

En mi caso tuve que configurar el

MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=465 <<<<<<<------------------------- (FOCUS THIS) MAIL_USERNAME=<<your email address>> MAIL_PASSWORD=<<app password>> MAIL_ENCRYPTION= ssl <<<<<<<------------------------- (FOCUS THIS)

para trabajarlo .. Podría ser útil. El resto del código era el mismo que @Sid dijo.

Y creo que editar el archivo de entorno y la aplicación / config / mail.php es innecesario. Solo usa un método.

Edite según el comentario de @Zan

Si necesita habilitar la protección tls , use las siguientes configuraciones.

MAIL_PORT=587 MAIL_ENCRYPTION= tls

Consulte here algunas otras configuraciones de gmail

Estoy usando la función Laravel Mail para enviar correos electrónicos. La siguiente es mi app/config/mail.php archivo app/config/mail.php .

''driver'' => ''sendmail'', ''host'' => ''smtp.gmail.com'', ''port'' => 587, ''from'' => array(''address'' => ''[email protected]'', ''name'' => ''MyName''), ''encryption'' => ''tls'', ''username'' => ''myUsername'', ''password'' => "password", ''sendmail'' => ''/usr/sbin/sendmail -bs'', ''pretend'' => false,

Método de correo del controlador

//Send Mail Mail::send(''sendMail'', array(''key'' => ''value''), function($message) { $message->to(''[email protected]'', ''Sender Name'')->subject(''Welcome!''); });

Cuando ejecuto el código me da el siguiente mensaje de error:

Swift_TransportException

Se esperaba el código de respuesta 220 pero se obtuvo el código "", con mensaje ""

He creado un archivo SendMail.php a la vista que contiene algunos datos.

¿Cómo resuelvo este mensaje de error?


Ese mensaje de error significa que no hubo respuesta O que el servidor no pudo conectarse.

La siguiente configuración funcionó en mi extremo:

''stream'' => [ ''ssl'' => [ ''allow_self_signed'' => true, ''verify_peer'' => false, ''verify_peer_name'' => false, ], ]

Tenga en cuenta que mi configuración SMTP es:

MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=465 MAIL_USERNAME=[full gmail address] MAIL_PASSWORD=[App Password obtained after two step verification] MAIL_ENCRYPTION=ssl


Este problema generalmente puede ocurrir cuando no habilita la verificación en dos pasos para la cuenta de gmail (que se puede hacer here ) que está utilizando para enviar un email . Primero, habilite la two step verification , puede encontrar muchos recursos para habilitar la verificación en dos pasos. Después de habilitarlo, debe crear una app password . Y use la app password la app password en su archivo .env . Cuando haya terminado con él, su archivo .env se verá algo así.

MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=<<your email address>> MAIL_PASSWORD=<<app password>> MAIL_ENCRYPTION=tls

y tu mail.php

<?php return [ ''driver'' => env(''MAIL_DRIVER'', ''smtp''), ''host'' => env(''MAIL_HOST'', ''smtp.gmail.com''), ''port'' => env(''MAIL_PORT'', 587), ''from'' => [''address'' => ''<<your email>>'', ''name'' => ''<<any name>>''], ''encryption'' => env(''MAIL_ENCRYPTION'', ''tls''), ''username'' => env(''MAIL_USERNAME''), ''password'' => env(''MAIL_PASSWORD''), ''sendmail'' => ''/usr/sbin/sendmail -bs'', ''pretend'' => false, ];

Después de hacerlo, ejecute php artisan config:cache y php artisan config:clear , luego verifique, el correo electrónico debería funcionar.


Hice lo mismo que sid diciendo que mi env después de actualizar es

MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=<mygmailaddress> MAIL_PASSWORD=<gmailpassword> MAIL_ENCRYPTION=tls

esto funcionó sin verificación de 2 pasos. con la verificación de 2 pasos habilitada, no funcionó para mí.


Lo que me ayudó ... a cambiar los parámetros de sendmail de -bs a -t.

''sendmail'' => ''/your/sendmail/path -t'',


Para mí el problema era el puerto. Primero usé incorrectamente el puerto 465, que funciona para SSL pero no para TLS . Entonces, la clave fue cambiar el puerto a 587.


si está utilizando Swift Mailer: asegúrese de que su variable $ transport sea similar a la siguiente, según las pruebas que he realizado, que el error resulta de una configuración incorrecta de puerto y SSL. nota: debe incluir ''ssl'' o ''tls'' en la variable de transporte.

CÓDIGO DE EJEMPLO:

// Create the Transport $transport = (new Swift_SmtpTransport(''smtp.gmail.com'', 465, ''ssl'')) ->setUsername([email protected]) ->setPassword(password) ; // Create the Mailer using your created Transport $mailer = new Swift_Mailer($transport); // Create a message $message = (new Swift_Message(''News Letter Subscription'')) ->setFrom([''[email protected]'' => ''A Name'']) ->setTo([''[email protected]'' => ''A Name'']) ->setBody(''your message body'') ; // Send the message $result = $mailer->send($message);