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?
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'),
enconfig/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
sendmail
controlador requiere que PHPproc_open()
La función no está deshabilitada por razones de seguridad usandodisabled_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
Ikbel
Para utilizar el servidor de correo electrónico que se ejecuta en localhost
su .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
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