¿Cómo configurar Laravel mail.php para usar la función de correo incorporada?

3 minutos de lectura

Avatar de usuario de Oleg
Oleg

Necesito enviar un correo electrónico a través de la mail() Función PHP. He leído en alguna parte que tengo que cambiar driver parámetro en config/mail.php a sendmail.

De forma predeterminada, se ve así:

'driver' => env('MAIL_DRIVER', 'smtp'),

Ahora, se ve así:

'driver' => 'sendmail',

También probé esto:

'driver' => 'mail',

Pero aún así, el mail() la función no funciona. ¿Qué necesito cambiar?

Avatar de usuario de Max Oriola
Max Oriola

Para hacer lo mismo que hace la función PHP mail(), en la mayoría de los casos debes configurar Laravel de la siguiente manera:

Utilice sendmail, en .env:

MAIL_DRIVER=sendmail

Si está utilizando Larvel 7 o superior

MAIL_MAILER=sendmail

Laravel 7 reemplazado MAIL_DRIVER por MAIL_MAILER

No se necesita host, usuario, contraseña, puerto ni cifrado.

En este punto, puede verificar si ya funciona, pero a veces también se necesita el siguiente paso.

Establezca una nueva opción .env en config/mail.php:

'sendmail' => env('MAIL_SENDMAIL', '/usr/sbin/sendmail -bs')

Establezca la ruta de envío de correo electrónico en .env. Puedes comprobar sendmail_path en phpinfo(), pero generalmente es este:

MAIL_SENDMAIL='/usr/sbin/sendmail -t -i'

  • Esta, aquí, es la respuesta correcta. Especialmente ese dato sobre configurar las opciones en “sendmail -t -i” en mi caso. Odio tener que usar esta función de correo php básica, pero en uno de mis proyectos me veo obligado a… Gracias.

    – Chris

    13 de marzo de 2018 a las 19:36

  • necesita ser 'sendmail' => env('MAIL_SENDMAIL', '/usr/sbin/sendmail -bs'), en config/mail.php si vas a editarlo allí. No olvides las comillas y la coma final.

    – Chris

    13/03/2018 a las 20:53

  • Tenga en cuenta que el sendmailcontrolador requiere que PHP proc_open() La función no está deshabilitada por razones de seguridad usando disabled_functions en ´php.ini`.

    – Christopher K.

    25 oct 2018 a las 19:06


  • Para Laravel 7 y superior, use MAIL_MAILER=sendmail

    – Erín

    25 de marzo de 2021 a las 11:14

  • ¿Alguien tiene una solución para usar sendmail en máquinas con Windows?

    – SiL3NC3

    23 de febrero de 2022 a las 8:03

Avatar de usuario de Ikbel
Ikbel

Para utilizar el servidor de correo electrónico que se ejecuta en localhostsu .env El archivo debería tener este aspecto (el PHP mail función no necesita un nombre de usuario o una contraseña)

MAIL_DRIVER=smtp
MAIL_HOST=localhost
MAIL_PORT=25
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=null

Luego, actualice el caché de configuración:

php artisan config:cache

  • Muchas gracias amigo!!! He buscado esta respuesta durante tanto tiempo y esto es malo, que la documentación oficial de laravel no brinda esta información. ¡Eres el mejor, @lbel!

    – Vaha

    2 de marzo de 2018 a las 8:54

  • Gracias, al igual que @Vaha, no pude encontrar esto en ningún lado. He estado buscando durante horas y en ninguna parte dice que debes usarlo así.

    – Stefan Teunissen

    30 de diciembre de 2018 a las 13:46

  • La parte de php crafty config:cache es vital, ¡no la olvides como lo hice yo!

    – Adam Jones

    10 sep 2019 a las 13:36

  • php artisan config:clear es el comando real que debe ejecutarse, creo

    – Arvind K.

    11 oct 2019 a las 6:20

  • Para un host local, puede configurarlo así MAIL_DRIVER=log e imprimirá todo el correo en el archivo de registro. ¡Muy útil!

    – Márcis P

    22 de marzo de 2020 a las 22:35

Debe configurar su configuración de correo en el archivo .env. Aquí debe configurar todo su controlador de correo y todos los detalles. Por favor vea esta documentación https://laravel.com/docs/5.0/mail

  • El enlace que publicó explica cómo configurar un montón de controladores API, pero no explica cómo configurar sendmail, que es probablemente la razón por la que OP publicó esta pregunta.

    – Hayden Bech

    8 de diciembre de 2018 a las 1:14

Avatar de usuario de AddWeb Solution Pvt Ltd
AddWeb Solution Pvt Ltd

Puedes establecer tu configuración de correo .env archivo como

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=youremail@gmail.com
MAIL_PASSWORD="password"
MAIL_ENCRYPTION=tls

también establezca la configuración en config/mail.php como:

'from' => ['address' => 'youremail@gmail.com', 'name' => 'Test'],

entonces puedes borrar el caché:

php artisan config:cache
php artisan cache:clear

¿Ha sido útil esta solución?