Site

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.php

Criando 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.php

Mé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'
    )
);