# 📧 Passo a Passo: Configurar Envio de Emails

Este guia vai te ajudar a configurar o envio de emails para coleta de assinaturas digitais.

---

## 🎯 Escolha o Método

Você tem 2 opções:

1. **SMTP (Recomendado)** - Mais confiável, funciona melhor
2. **mail() nativo** - Mais simples, mas pode não funcionar em alguns servidores

**Recomendamos usar SMTP!**

---

## 📋 MÉTODO 1: SMTP (Recomendado)

### Passo 1: Instalar PHPMailer

1. Acesse seu servidor via FTP ou SSH
2. Vá até a pasta raiz do projeto (onde está o arquivo `composer.json`)
3. Execute o comando:

```bash
composer require phpmailer/phpmailer
```

**OU** se você não tem acesso ao terminal:

1. Baixe o PHPMailer manualmente:
   - Acesse: https://github.com/PHPMailer/PHPMailer/releases
   - Baixe a versão mais recente
   - Extraia na pasta `vendor/phpmailer/phpmailer/`

### Passo 2: Criar arquivo de configuração

1. Na pasta `config/`, crie ou edite o arquivo `email.php`
2. Copie e cole este código:

```php
<?php

/**
 * Configuração de Email
 */

return [
    // Método de envio: 'smtp' ou 'mail'
    'method' => 'smtp',
    
    // Configurações SMTP
    'smtp' => [
        'host' => 'smtp.gmail.com',        // ⬅️ ALTERE AQUI
        'port' => 587,                      // ⬅️ ALTERE SE NECESSÁRIO
        'encryption' => 'tls',              // 'tls' ou 'ssl'
        'username' => 'seu-email@gmail.com', // ⬅️ ALTERE AQUI
        'password' => 'sua-senha-de-app',   // ⬅️ ALTERE AQUI
        'timeout' => 30,
    ],
    
    // Remetente padrão
    'from' => [
        'email' => 'seu-email@gmail.com',   // ⬅️ ALTERE AQUI
        'name' => 'Sistema de Assinaturas',  // ⬅️ ALTERE SE QUISER
    ],
    
    'charset' => 'UTF-8',
    'debug' => false, // Mude para 'true' para ver erros detalhados
];
```

### Passo 3: Configurar para Gmail

Se você vai usar Gmail, siga estes passos:

#### 3.1. Ativar verificação em 2 etapas

1. Acesse: https://myaccount.google.com/security
2. Procure por "Verificação em duas etapas"
3. Ative se ainda não estiver ativada

#### 3.2. Gerar senha de app

1. Acesse: https://myaccount.google.com/apppasswords
2. Selecione:
   - **App**: Email
   - **Dispositivo**: Outro (Personalizado)
   - Digite: "Sistema de Assinaturas"
3. Clique em "Gerar"
4. **Copie a senha gerada** (16 caracteres, tipo: `abcd efgh ijkl mnop`)

#### 3.3. Configurar no arquivo

No arquivo `config/email.php`, preencha:

```php
'smtp' => [
    'host' => 'smtp.gmail.com',
    'port' => 587,
    'encryption' => 'tls',
    'username' => 'seu-email@gmail.com',        // ⬅️ Seu email Gmail
    'password' => 'abcd efgh ijkl mnop',        // ⬅️ A senha de app gerada
    'timeout' => 30,
],

'from' => [
    'email' => 'seu-email@gmail.com',          // ⬅️ Seu email Gmail
    'name' => 'Minha Empresa',                  // ⬅️ Nome que aparece no email
],
```

### Passo 4: Configurar para outros provedores

#### Outlook/Hotmail

```php
'smtp' => [
    'host' => 'smtp-mail.outlook.com',
    'port' => 587,
    'encryption' => 'tls',
    'username' => 'seu-email@outlook.com',
    'password' => 'sua-senha-normal',
],
```

#### Yahoo

```php
'smtp' => [
    'host' => 'smtp.mail.yahoo.com',
    'port' => 587,
    'encryption' => 'tls',
    'username' => 'seu-email@yahoo.com',
    'password' => 'sua-senha-normal',
],
```

#### Servidor próprio (cPanel, etc)

```php
'smtp' => [
    'host' => 'mail.seudominio.com.br',        // ⬅️ Seu servidor de email
    'port' => 587,                              // Ou 465 para SSL
    'encryption' => 'tls',                      // Ou 'ssl' se usar porta 465
    'username' => 'noreply@seudominio.com.br', // ⬅️ Seu email
    'password' => 'sua-senha',                  // ⬅️ Senha do email
],
```

### Passo 5: Testar

1. Faça upload do arquivo `config/email.php` para o servidor
2. Acesse o sistema
3. Vá em "Documentos" > escolha um documento > "Coletar Assinaturas"
4. Adicione um signatário com seu próprio email
5. Clique em "Enviar Emails"
6. Verifique sua caixa de entrada

### Passo 6: Verificar logs (se não funcionar)

1. Abra o arquivo `logs/app.log`
2. Procure por mensagens como:
   - `Email enviado via SMTP` ✅ = Funcionou!
   - `Erro ao enviar email` ❌ = Verifique a mensagem de erro

Se houver erro, ative o modo debug:

```php
'debug' => true, // No arquivo config/email.php
```

Isso vai mostrar mais detalhes nos logs.

---

## 📋 MÉTODO 2: mail() nativo (Alternativa)

Se SMTP não funcionar, você pode tentar o método nativo:

### Passo 1: Criar arquivo de configuração

1. Na pasta `config/`, crie o arquivo `email.php`
2. Cole este código:

```php
<?php

return [
    'method' => 'mail', // Usa função mail() do PHP
    
    'from' => [
        'email' => 'noreply@seudominio.com.br',  // ⬅️ ALTERE
        'name' => 'Sistema de Assinaturas',
    ],
    
    'charset' => 'UTF-8',
    'debug' => false,
];
```

### Passo 2: Testar

Siga os mesmos passos do método SMTP (Passo 5 acima).

**⚠️ Nota:** Este método pode não funcionar em servidores compartilhados ou pode enviar emails para spam.

---

## ✅ Checklist Final

Antes de considerar concluído, verifique:

- [ ] PHPMailer instalado (se usar SMTP)
- [ ] Arquivo `config/email.php` criado e configurado
- [ ] Credenciais corretas (usuário e senha)
- [ ] Teste de envio realizado
- [ ] Email recebido na caixa de entrada
- [ ] Logs verificados (sem erros)

---

## ❌ Problemas Comuns e Soluções

### "Erro de autenticação"

**Causa:** Usuário ou senha incorretos

**Solução:**
- Verifique se o email e senha estão corretos
- Para Gmail, certifique-se de usar senha de app (não a senha normal)
- Verifique se a verificação em 2 etapas está ativa (Gmail)

### "Connection timeout"

**Causa:** Porta ou servidor incorretos

**Solução:**
- Verifique se a porta está correta (587 para TLS, 465 para SSL)
- Verifique se o servidor SMTP está correto
- Tente aumentar o timeout: `'timeout' => 60`

### "PHPMailer não encontrado"

**Causa:** PHPMailer não foi instalado

**Solução:**
```bash
composer require phpmailer/phpmailer
```

Ou instale manualmente baixando do GitHub.

### "Emails vão para spam"

**Causa:** Configuração de SPF/DKIM ou uso de email gratuito

**Solução:**
- Use um email com domínio próprio
- Configure SPF e DKIM no DNS
- Use SMTP ao invés de mail()

### "Função mail() não disponível"

**Causa:** Servidor não suporta mail() nativo

**Solução:**
- Use SMTP (Método 1)
- Entre em contato com seu provedor de hospedagem

---

## 📞 Precisa de Ajuda?

Se ainda tiver problemas:

1. **Ative o modo debug:**
   ```php
   'debug' => true,
   ```

2. **Verifique os logs:**
   - Abra `logs/app.log`
   - Procure por mensagens de erro
   - Copie a mensagem de erro completa

3. **Teste as credenciais:**
   - Tente fazer login no webmail com as mesmas credenciais
   - Se não funcionar, as credenciais estão erradas

4. **Entre em contato:**
   - Com seu provedor de hospedagem
   - Verifique se o servidor permite envio de emails
   - Pergunte sobre configurações SMTP específicas

---

## 🎉 Pronto!

Depois de configurar, os emails de assinatura serão enviados automaticamente quando você clicar em "Enviar Emails" na página de gerenciamento de assinaturas.

