Disparando Emails
Após criar sua classe Mail, você poderá enviar emails utilizando o sistema Mailer do MUCRM.
O envio pode ser feito:
- Diretamente
- Através de Jobs
- Em segundo plano utilizando Workers
Importando o Mailer
use MUCRM\engine\mail\Mailer;Envio Simples
use MUCRM\engine\mail\mailer;
use MUCRM\shared\mailers\recovery_mail;
mailer::send(
'cliente@email.com',
new recovery_mail('Maria', 'cliente@email.com', 'abc123')
);O primeiro parâmetro representa o destinatário. O segundo parâmetro recebe a classe Mail.
Exemplo Completo
<?php
namespace App\Controllers;
use MUCRM\engine\mail\Mailer;
use MUCRM\shared\mailers\recovery_mail;
class AuthController
{
public function recovery()
{
mailer::send(
'admin@site.com',
new recovery_mail(
'Administrador',
'admin',
'123456'
)
);
}
}Enviando Emails em Segundo Plano
O recomendado é utilizar Jobs para evitar lentidão na aplicação:
SendRecoveryEmail::dispatch([
'email' => 'admin@site.com',
'name' => 'Administrador',
'login' => 'admin',
'password' => '123456'
]);Exemplo da Job
<?php
namespace MUCRM\shared\jobs;
use MUCRM\engine\queue\job;
use MUCRM\engine\mail\Mailer;
use MUCRM\shared\mailers\recovery_mail;
class SendRecoveryEmail extends Job
{
public function handle(): void
{
mailer::send(
$this->data['email'],
new recovery_mail(
$this->data['name'],
$this->data['login'],
$this->data['password']
)
);
}
}Processando os Emails
php mucrm jobs:runUtilizando Delay
Você também pode atrasar o envio do email:
SendRecoveryEmail::dispatch([
'email' => 'admin@site.com'
], 60);Neste exemplo: 60 segundos.
Enviando para Múltiplos Destinatários
mailer::send(
'contato@site.com',
new ContactMail()
);
mailer::send(
'financeiro@site.com',
new ContactMail()
);Tratando Erros
Você pode utilizar try/catch:
try {
mailer::send(
'admin@site.com',
new recovery_mail()
);
} catch (\Throwable $e) {
echo $e->getMessage();
}Logs
Os erros podem ser registrados utilizando:
use MUCRM\engine\support\log;
log::error($e);Recomendação
💡Em produção, sempre utilize
Queue, Workers, Retry automático e Failed Jobs. Isso evita perda de emails e melhora a performance da aplicação.
Fluxo Recomendado
Controller
↓
Dispatch Job
↓
Queue
↓
Worker
↓
Mailer
↓
Email enviado