---
title: Guia – Formulário que só envia e-mail (comando form:email)
---

# Formulário que só envia e-mail – via comando Artisan

Formulário indicado para:

- inscrições simples em eventos
- contatos rápidos
- recebimento de informações pontuais de cidadãos

O comando `form:email` gera automaticamente todos os arquivos necessários. Basta executar e configurar o `.env`.

---

## 1. Executar o comando

No terminal, na raiz do projeto:

```bash
php artisan form:email Contato
```

**Exemplos com nomes compostos:**

```bash
# Formulário em /contato
php artisan form:email Contato

# Formulário em /formularios/inscricao-evento
php artisan form:email Formularios/InscricaoEvento

# Com remetente específico (conta diferente do padrão do projeto)
php artisan form:email Ouvidoria --remetente="ouvidoria@angra.rj.gov.br"

# Com layout customizado
php artisan form:email Contato --layout=layouts.window.theme

# Sobrescrever arquivos existentes
php artisan form:email Contato --force
```

---

## 2. Opções disponíveis

| Opção | Descrição | Padrão |
|-------|-----------|--------|
| `--route-prefix=` | Prefixo da URL | Derivado do nome (ex: `Contato` → `/contato`) |
| `--layout=` | Layout Blade do formulário | `layouts.pmar.theme` |
| `--remetente=` | E-mail remetente (conta específica) | `null` (usa `mail.from`) |
| `--force` | Sobrescrever arquivos existentes | `false` |

---

## 3. O que é gerado

O comando cria:

| Arquivo | Caminho |
|---------|---------|
| Request | `app/Http/Requests/Paginas/Formularios/{Nome}Request.php` |
| Controller | `app/Http/Controllers/Paginas/Formularios/{Nome}Controller.php` |
| Mailable | `app/Mail/{Nome}Mail.php` |
| View e-mail | `resources/views/emails/formularios/{nome}.blade.php` |
| View formulário | `resources/views/paginas/formularios/{nome}.blade.php` |

Também adiciona:

- Rotas GET e POST em `routes/web.php`
- Chaves de destinatário e remetente em `config/mail.php`

---

## 4. Configurar o .env

Após executar o comando, adicione no `.env` as variáveis exibidas. Exemplo para `form:email Contato`:

```env
# Destinatário (obrigatório)
MAIL_FORM_CONTATO_DESTINO=contato@angra.rj.gov.br

# Remetente (opcional – se não informado, usa mail.from)
MAIL_FORM_CONTATO_REMETENTE=contato@angra.rj.gov.br
```

Exemplo para `form:email Formularios/InscricaoEvento`:

```env
MAIL_FORM_FORMULARIOS_INSCRICAO_EVENTO_DESTINO=eventos@angra.rj.gov.br
MAIL_FORM_FORMULARIOS_INSCRICAO_EVENTO_REMETENTE=inscricoes@angra.rj.gov.br
```

Os nomes das variáveis são personalizados com o nome do formulário para evitar conflitos.

---

## 5. Configuração base de e-mail

Garanta no `.env` as configurações gerais de envio:

```env
MAIL_MAILER=smtp
MAIL_HOST=smtp.seudominio.com
MAIL_PORT=587
MAIL_USERNAME=seu_usuario
MAIL_PASSWORD=sua_senha
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=nao-responda@angra.rj.gov.br
MAIL_FROM_NAME="Prefeitura de Angra dos Reis"
```

---

## 6. Campos padrão do formulário

O formulário gerado inclui:

- **nome** (obrigatório)
- **email** (obrigatório)
- **assunto** (obrigatório)
- **mensagem** (obrigatório)

Para alterar campos, edite o **Request** (regras e atributos) e a **view Blade** do formulário após a geração.

---

## 7. Passo a passo completo

1. Execute: `php artisan form:email NomeDoFormulario`
2. Adicione no `.env`: `MAIL_FORM_{NOME}_DESTINO=` e, se quiser, `MAIL_FORM_{NOME}_REMETENTE=`
3. Acesse a URL exibida (ex: `/contato`)
4. Pronto.

---

## 8. Customizações comuns

**Alterar título do formulário:** edite a view em `resources/views/paginas/formularios/{nome}.blade.php` e troque o texto em `{{ __('Fale conosco') }}`.

**Alterar assunto do e-mail:** edite o Mailable em `app/Mail/{Nome}Mail.php`, método `build()`.

**Adicionar ou remover campos:** edite o Request (regras e `attributes`) e a view do formulário.

**Usar componentes do projeto:** substitua trechos da view por `@include` dos componentes existentes em `resources/views/components`.

---

## 9. Resumo

| Etapa | Ação |
|-------|------|
| 1 | `php artisan form:email Contato` |
| 2 | Configurar `.env` com destinatário (e remetente, se necessário) |
| 3 | Acessar `/contato` e testar |

O formulário gerado segue as regras do projeto: Bootstrap, i18n com `{{ __('...') }}`, sem CSS/JS inline e com validação no Request.
