Criando Emails
Os Emails no MUCRM são criados utilizando Classes Mail. Cada classe representa um email separado dentro da aplicação.
Isso permite:
- Organização
- Reutilização
- Templates independentes
- Separação entre lógica e HTML
Estrutura Recomendada
app/
├── Mails/
│ └── RecoveryMail.php
│
resources/
└── views/
└── emails/
└── recovery.mucrm.phpCriando a Classe Mail
Crie um arquivo dentro de app/Mails:
<?php
namespace MUCRM\shared\mailers;
use MUCRM\engine\mail\Mail;
class recovery_mail extends mail
{
protected string $name;
protected string $login;
protected string $password;
public function __construct(
string $name,
string $login,
string $password
) {
$this->name = $name;
$this->login = $login;
$this->password = $password;
}
public function subject(): string
{
return 'Recuperação de Conta';
}
public function view(): string
{
return 'emails.recovery';
}
public function data(): array
{
return [
'name' => $this->name,
'login' => $this->login,
'password' => $this->password
];
}
}Método subject()
Responsável pelo assunto do email:
public function subject(): string
{
return 'Recuperação de Conta';
}Método view()
Define qual template HTML será renderizado:
public function view(): string
{
return 'emails.recovery';
}A view emails.recovery equivale ao arquivo:
resources/views/emails/recovery.mucrm.phpMétodo data()
Responsável por enviar variáveis para o template HTML:
public function data(): array
{
return [
'name' => $this->name
];
}Criando o Template HTML
Crie o arquivo resources/views/emails/recovery.mucrm.php:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<title>Recuperação</title>
</head>
<body>
<h1>Olá {{ $name }}</h1>
<p>Seu login:</p>
<strong>{{ $login }}</strong>
<p>Sua senha:</p>
<strong>{{ $password }}</strong>
</body>
</html>Variáveis Disponíveis
As variáveis enviadas pelo método data() ficam disponíveis automaticamente na View:
'name' => 'Admin'Na View:
{{ $name }}HTML Inline
O recomendado é utilizar CSS Inline nos emails:
<p style="color:#ffffff;font-size:16px;">
Email de recuperação
</p>Isso melhora a compatibilidade com: Gmail, Outlook, Yahoo, Hotmail, Apple Mail.
Recomendação
Organize seus emails por categoria:
resources/views/emails/auth/
resources/views/emails/store/
resources/views/emails/payments/Boas Práticas
- Utilizar HTML simples
- Usar CSS inline
- Evitar JavaScript
- Evitar CSS externo
- Utilizar tabelas para layout
- Manter templates leves
Próximo Passo
Após criar seu Email, você poderá dispará-lo utilizando o Mailer:
mailer::send(
'admin@site.com',
new RecoveryMail(
'Admin',
'admin',
'123456'
)
);