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);