template mail example enviar php laravel laravel-5 email-integration

php - mail - Intentando que el correo electrónico de Laravel 5 funcione



mail::send laravel (17)

  1. Vas al Mailgun
  2. Haga clic en Destinatarios autorizados
  3. Agregue la dirección de correo electrónico a la que desea enviar el correo.
  4. Verifique el mensaje enviado al correo.
  5. Bravo! ... Eres bueno para ir.

Estoy tratando de enviar un correo electrónico a un usuario específico escribiendo la URL, pero recibo el siguiente error:

Swift_TransportException en AbstractSmtpTransport.php línea 383: Código de respuesta esperado 250 pero obtuvo el código "530", con el mensaje "530 5.7.1 Requiere autenticación

Hasta ahora solo estoy tratando de que funcione con Gmail. ¿Cómo puedo hacer que esto funcione?

Esto es lo que tengo hasta ahora: mail.php

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

Esto es lo que tengo en las rutas:

Route::get(''test'', function() { Mail::send(''Email.test'', [], function ($message) { $message->to(''[email protected]'', ''HisName'')->subject(''Welcome!''); }); });

Esto es lo que tengo en mi controlador:

class MailController extends Controller { public function Sending_Email() { $this->call(''GET'',''Email.test''); return View(''Email.test''); } }

Y esto es lo que está en mi archivo .env:

MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 [email protected] MAIL_PASSWORD=MyPassword


A mí también me pasa.

Es porque cuando editamos el archivo .env necesitamos reiniciar el servidor. Simplemente detenga el servicio actual de php artisan serve y comience de nuevo. Esto funcionará seguro.

Si aún no funciona, intente hacer php artisan config:cache


Debe reiniciar el servidor y ejecutar estos comandos:

php artisan cache:clear php artisan view:clear php artisan route:clear php artisan config:clear php artisan config:cache

Eso debería funcionar.


En mi caso: reinicie el servidor y ejecute php artisan config:clear command.


Eso simplemente significa que su servidor no tiene acceso al servidor SMTP.

Puede probar esto haciendo:

telnet <smtpServer> <smtpPort>

Debería obtener el error Acceso denegado.

La solución es usar otro servidor SMTP al que pueda acceder su servidor.


Está recibiendo un error de autenticación porque el nombre de usuario y la contraseña en su archivo de configuración están mal configurados.

Cambia esto:

''username'' => env(''[email protected]''), ''password'' => env(''MyPassword''),

A esto:

''username'' => env(''MAIL_USERNAME''), ''password'' => env(''MAIL_PASSWORD''),

El método env comprueba su archivo .env. En su archivo .env llama a estos MAIL_USERNAME , así que eso es lo que necesita pasar al método env .

Un consejo para la resolución de problemas: agregar dd(Config::get(''mail'')); para que pueda ver la configuración real generada . Esto lo ayudará a detectar problemas como este y saber exactamente qué información intentará utilizar Laravel. Por lo tanto, es posible que desee detener eso en su ruta de prueba temporalmente para examinar lo que tiene:

Route::get(''test'', function() { dd(Config::get(''mail'')); });


He tenido el mismo problema; mi MAIL_ENCRYPTION era tls en mail.php pero era null en el archivo .env .
¡Así que cambié null a tls y funcionó!


Mi configuración de archivo .env es así para laravel 5.1

MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 [email protected] MAIL_PASSWORD=**************** MAIL_ENCRYPTION=tls

Lo más importante aquí es que creé la contraseña específica de la aplicación de Gmail (16 dígitos).

Necesito revelar una cosa más ya que no tuve suerte para ninguna de las configuraciones. Es decir, cada vez que cambie el archivo .env necesito ejecutar este comando

php artisan config:cache

Y esto es lo más importante porque sin este comando laravel ejecuta configuraciones previas desde su caché. Me tomó más de 10 horas resolverlo.


Ninguna de las soluciones anteriores funcionó para mí en localhost. Incluso permití el acceso desde aplicaciones menos seguras, permití el acceso a través de captcha de desbloqueo de pantalla y configuré el par de verificación y el nombre del par en false para SSL.

Finalmente, utilicé la solución de prueba SMTP de código abierto de MailHog. Los pasos son los siguientes:

  1. Descargue la última versión de MailHog para su sistema operativo
  2. Especifique la siguiente configuración en su archivo .env

MAIL_DRIVER = smtp

MAIL_HOST = 127.0.0.1

MAIL_PORT = 1025

MAIL_USERNAME = testuser

MAIL_PASSWORD = testpwd

MAIL_ENCRYPTION = nulo

[email protected]

  1. Ejecute el archivo descargado de MailHog
  2. Enviar correo electrónico
  3. Compruebe el correo electrónico enviado yendo a localhost: 8025

Para fines de desarrollo, https://mailtrap.io/ proporciona todas las configuraciones que deben agregarse en el archivo .env. P.ej:

Host: mailtrap.io Port: 25 or 465 or 2525 Username: cb1d1475bc6cce Password: 7a330479c15f99 Auth: PLAIN, LOGIN and CRAM-MD5 TLS: Optional

De lo contrario, para fines de implementación, puede obtener las credenciales smtp que se agregarán en el archivo .env desde el correo (como gmail n all)

Después de la adición, asegúrese de reiniciar el servidor


Por fin lo tengo! Solo para compartir, hay más configuraciones que solo .env

Esto es .env

MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 [email protected] MAIL_PASSWORD=******** MAIL_ENCRYPTION=tls

config / mail.php también necesita ingresar la dirección y el nombre para que funcione.

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


Sé que está funcionando para ti ahora @ Vantheman6, pero esto es lo que funcionó para mí en caso de que sea lo mismo para otra persona.

Agregué a mi archivo .env los detalles del servicio de correo que estoy usando. Así que asegúrese de los siguientes detalles

MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 [email protected] MAIL_PASSWORD=MyPassword

en el archivo .env son precisos.

NOTA: No olvide reiniciar su servidor después de editar el archivo .env para que elija los nuevos datos que ingrese allí.

Si no reinicia su servidor, el archivo .env continuará presentando los datos de correo antiguos a la aplicación aunque haya realizado cambios que pueden causar este error.


Si alguna vez tiene el mismo problema y prueba todo en línea y no funciona, es probable que el archivo de caché de configuración esté enviando la información incorrecta. Puede encontrarlo en bootstrap / cache / config.php. Asegúrese de que las credenciales estén ahí. Me tomó una semana darme cuenta de eso. Espero que esto ayude a alguien algún día.


Si sus resultados de dd(Config::get(''mail'')); son nulos simplemente use el comando

php artisan config:clear


Tuve el mismo problema que tú, lo puse a trabajar.

En primer lugar, debe verificar que la configuración de .env esté configurada correctamente. Aquí están mis configuraciones:

MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=yourusername MAIL_PASSWORD=yourpassword MAIL_ENCRYPTION=tls

Asegúrese de que su contraseña no esté entre comillas :).

Y en config / mail.php tiene lo siguiente, sin los comentarios.

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

Espero que funcione para ti :)


el problema se resolverá borrando la memoria caché

php artisan config:cache


Para futuras referencias a las personas que vienen aquí. después de ejecutar el comando que se dio en la tercera respuesta aquí ( estoy usando ahora Laravel 5.3 ).

php artisan config:cache

Puede encontrar este problema:

[ReflectionException] Class view does not exist

En ese caso, debe volver a agregarlo manualmente a su lista de proveedores en el archivo app.php. IR A: app->config->app.php->''providers[]'' y agregarlo, así:

Illuminate/View/ViewServiceProvider::class,

Espero que ayude a alguien.