¡Hola a todos! Hoy te guiaré a través del proceso de creación de una tarea programada en Laravel. Tomaremos el ejemplo del envío de un correo electrónico de marketing diario a los usuarios.
Primero, creemos una nueva clase Mailable usando el siguiente comando Artisan:
php artisan make:mail DailyMarketingEmail --view
Este comando genera una nueva clase Mailable en el directorio App/Mail, junto con un archivo de vista correspondiente, daily-marketing-email.blade.php, dentro del directorio resources/views/mail/. Puede personalizar el contenido del correo electrónico dentro de este archivo de vista.
A continuación, crearemos un comando Artisan que se encargará de enviar nuestro correo electrónico de marketing diario. Ejecute el siguiente comando:
php artisan make:command SendDailyMarketingEmail
Este comando generará una nueva clase de comando en el directorio aplicación/Consola/Comandos.
Después de generar su comando, verá dos propiedades clave en la clase generada:
firma $ protegida: esto define el nombre y la firma de su comando Artisan.
descripción $ protegida: proporciona una descripción de su comando.
El método handle en esta clase es donde definirás la lógica de tu comando.
Después de configurar todo, puedes enumerar todos tus comandos de Artisan ejecutando:
php artesano
Deberías ver tu comando en la lista:
Ahora, definamos la lógica dentro del método de manejo para enviar los correos electrónicos de marketing:
each(function ($user) { Mail::to($user->email)->send(new DailyMarketingEmail); }); } }
En el método handle, recuperamos todos los usuarios de la base de datos y enviamos a cada uno el DailyMarketingEmail.
Puedes probar manualmente tu comando ejecutando:
php artisan app:send-daily-marketing-emails
Considere utilizar herramientas como Mailtrap o MailHog para capturar y ver los correos electrónicos enviados durante la prueba.
Finalmente, para automatizar el envío diario de este correo electrónico, necesitamos programar el comando en el método de programación del archivo Kernel.php ubicado en el directorio app/Console/:
command('app:send-daily-marketing-emails')->dailyAt('08:30'); } /** * Register the commands for the application. */ protected function commands(): void { $this->load(__DIR__.'/Commands'); require base_path('routes/console.php'); } }
Aquí usamos el método dailyAt('08:30') para programar el comando para que se ejecute todos los días a las 08:30 a.m. Puedes ajustar el tiempo según sea necesario.
Correos electrónicos en cola: para una gran cantidad de usuarios, es una buena práctica poner los correos electrónicos en cola en lugar de enviarlos todos a la vez. Esto se puede hacer implementando la interfaz ShouldQueue en la clase Mailable.
Consideraciones de rendimiento: para bases de usuarios grandes, considere optimizar las consultas de la base de datos y el proceso de envío de correo electrónico para garantizar un rendimiento eficiente.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3