# Configuração de E-mail

## Opções de Configuração

### 1. Mailtrap (Recomendado para Desenvolvimento)

Mailtrap é um serviço de teste de e-mail que permite capturar e-mails sem enviá-los realmente.

**Passos:**
1. Acesse [mailtrap.io](https://mailtrap.io)
2. Crie uma conta gratuita
3. Crie um novo projeto
4. Copie as credenciais SMTP
5. Configure em `app/config/config.php`:

```php
define('SMTP_HOST', 'smtp.mailtrap.io');
define('SMTP_PORT', 2525);
define('SMTP_USER', 'seu_usuario_mailtrap');
define('SMTP_PASS', 'sua_senha_mailtrap');
```

### 2. Gmail

**Passos:**
1. Ative a autenticação de dois fatores na sua conta Google
2. Gere uma senha de aplicativo: https://myaccount.google.com/apppasswords
3. Configure em `app/config/config.php`:

```php
define('SMTP_HOST', 'smtp.gmail.com');
define('SMTP_PORT', 587);
define('SMTP_USER', 'seu_email@gmail.com');
define('SMTP_PASS', 'sua_senha_de_aplicativo');
```

### 3. SendGrid

**Passos:**
1. Crie uma conta em [sendgrid.com](https://sendgrid.com)
2. Gere uma chave de API
3. Configure em `app/config/config.php`:

```php
define('SMTP_HOST', 'smtp.sendgrid.net');
define('SMTP_PORT', 587);
define('SMTP_USER', 'apikey');
define('SMTP_PASS', 'sua_chave_api_sendgrid');
```

### 4. Servidor de E-mail Local

Se você tem um servidor de e-mail local configurado:

```php
define('SMTP_HOST', 'localhost');
define('SMTP_PORT', 25);
define('SMTP_USER', '');
define('SMTP_PASS', '');
```

## Testando a Configuração

Crie um arquivo de teste `test_email.php`:

```php
<?php
require_once 'app/config/config.php';
require_once 'app/models/EmailSender.php';

$emailer = new EmailSender();

$test_data = [
    'service_name' => 'Teste de Serviço',
    'reservation_date' => date('Y-m-d'),
    'reservation_time' => '14:00',
    'duration' => 30,
    'price' => 100.00,
    'customer_email' => 'seu_email@exemplo.com',
    'customer_phone' => '(11) 99999-9999'
];

$result = $emailer->sendReservationConfirmation('seu_email@exemplo.com', 'Teste Cliente', $test_data);

if ($result) {
    echo "E-mail enviado com sucesso!";
} else {
    echo "Erro ao enviar e-mail";
}
?>
```

Execute em seu navegador:
```
http://localhost:8000/test_email.php
```

## Troubleshooting

### Erro: "SMTP connection failed"
- Verifique se as credenciais estão corretas
- Verifique se a porta SMTP está correta
- Verifique se o firewall permite a conexão

### Erro: "Authentication failed"
- Verifique o usuário e senha
- Verifique se a senha de aplicativo foi gerada corretamente
- Tente usar a porta 587 em vez de 25

### E-mails indo para spam
- Adicione registros SPF, DKIM e DMARC no seu domínio
- Use um domínio verificado
- Evite palavras-chave de spam

## Melhorias Futuras

Para envio de e-mail mais robusto em produção, considere usar bibliotecas como:

- **PHPMailer**: https://github.com/PHPMailer/PHPMailer
- **SwiftMailer**: https://swiftmailer.symfony.com/
- **Symfony Mailer**: https://symfony.com/doc/current/mailer.html

Exemplo com PHPMailer:

```php
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    $mail->isSMTP();
    $mail->Host = SMTP_HOST;
    $mail->SMTPAuth = true;
    $mail->Username = SMTP_USER;
    $mail->Password = SMTP_PASS;
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port = SMTP_PORT;
    
    $mail->setFrom(MAIL_FROM, MAIL_FROM_NAME);
    $mail->addAddress($to);
    $mail->isHTML(true);
    $mail->Subject = $subject;
    $mail->Body = $message;
    
    $mail->send();
} catch (Exception $e) {
    echo "Erro ao enviar e-mail: {$mail->ErrorInfo}";
}
?>
```

Instale com Composer:
```bash
composer require phpmailer/phpmailer
```
