# Enviar o primeiro e-mail por SMTP

> Obtenha as suas credenciais SMTP, escolha uma porta e envie um e-mail de teste por smtp.emailit.com com swaks, OpenSSL ou Python e depois conecte a sua aplicação ou o seu framework.

Este guia rápido mostra como enviar um e-mail de teste pelo SMTP relay do Emailit a partir do seu terminal e depois conectar a sua própria aplicação. Use SMTP quando o seu software já tiver configurações de SMTP. Para código novo, a [API](/pt/docs/quickstart/api/) oferece mais recursos.

## Antes de começar

- Um domínio de envio verificado. Se você ainda não tem um, siga a primeira seção do [guia rápido da API](/pt/docs/quickstart/api/#add-and-verify-your-domain) ou [Adicionar um domínio](/pt/docs/domains/add-a-domain/).
- Uma chave de API. Crie uma em **Email API → API Keys** com **Add API key**. A sua chave de API é a sua senha SMTP.

## As suas credenciais SMTP

| Configuração | Valor |
| --- | --- |
| Host | `smtp.emailit.com` |
| Porta | `587` com STARTTLS (recomendada). Veja as alternativas na tabela abaixo. |
| Usuário | `emailit` |
| Senha | A sua chave de API, que começa com `secret_` |
| Autenticação | `PLAIN` ou `LOGIN` |
| Endereço From | Qualquer endereço em um domínio de envio verificado, por exemplo, `Acme <hello@acme.com>` |

Você também encontra essas configurações no card **SMTP Info** ao abrir uma chave em **Email API → API Keys**.

| Porta | Criptografia | Quando usar |
| --- | --- | --- |
| `587` | STARTTLS | O padrão da maioria das aplicações e bibliotecas |
| `465` | TLS desde o primeiro byte (TLS implícito) | Quando o seu cliente a chama de “SSL” ou “SMTPS” |
| `2525` | STARTTLS | Quando a sua rede ou o seu provedor de hospedagem bloqueia a 587 |
| `2587` | STARTTLS | Outra alternativa quando a 587 e a 2525 estão bloqueadas |
| `25` | STARTTLS | Relay entre servidores. Muitos provedores de nuvem bloqueiam a porta 25 de saída. |

O relay oferece TLS em todas as portas, mas não o exige. Sempre ative o TLS no seu cliente para que a sua chave de API não seja enviada em texto simples.

## Enviar um e-mail de teste

Escolha uma destas ferramentas. Substitua `hello@acme.com` por um endereço no seu domínio verificado e `ada@example.com` pelo endereço de e-mail com que você criou a conta.

> **Modo sandbox:** Até o seu workspace ter acesso de produção, você só pode enviar para os endereços de e-mail das contas dos membros do workspace. Os outros destinatários são recusados com `550 Unverified workspaces can only send to workspace members' account emails`. Consulte [Acesso de produção](/pt/docs/workspaces/production-access/).

### swaks

O [swaks](https://github.com/jetmore/swaks) é uma ferramenta de linha de comando para testar SMTP. Instale-o com `brew install swaks` ou `apt install swaks` e depois execute:

```bash
swaks --server smtp.emailit.com:587 --tls \
  --auth-user emailit --auth-password "$EMAILIT_API_KEY" \
  --from hello@acme.com --to ada@example.com \
  --header "Subject: Hello from Emailit SMTP" \
  --body "This is my first email sent through the Emailit SMTP relay."
```

O swaks mostra a conversa SMTP inteira. A última resposta do servidor contém o ID do e-mail:

```text
<~  250 2.0.0 OK: queued as em_2pX7cN4kQ9vLm3RtB8yWd1Zs
```

### OpenSSL

O OpenSSL vem pré-instalado na maioria dos sistemas e permite que você digite os comandos SMTP. Primeiro, codifique as suas credenciais para o `AUTH PLAIN`:

```bash
printf '\0emailit\0%s' "$EMAILIT_API_KEY" | base64
```

Depois, abra uma conexão e digite os comandos abaixo, colando a string codificada depois de `AUTH PLAIN`:

```bash
openssl s_client -connect smtp.emailit.com:587 -starttls smtp -crlf -quiet
```

```text
EHLO localhost
AUTH PLAIN AGVtYWlsaXQAc2VjcmV0X...
MAIL FROM:<hello@acme.com>
RCPT TO:<ada@example.com>
DATA
From: Acme <hello@acme.com>
To: ada@example.com
Subject: Hello from Emailit SMTP

This is my first email sent through the Emailit SMTP relay.
.
QUIT
```

Depois do `AUTH PLAIN`, o servidor responde `235`. Depois da linha com um único `.`, ele responde `250 2.0.0 OK: queued as em_…`.

### Python

O `smtplib` nativo do Python não precisa de pacotes extras:

```python title="send_smtp.py"
from email.message import EmailMessage

msg = EmailMessage()
msg["From"] = "Acme <hello@acme.com>"
msg["To"] = "ada@example.com"
msg["Subject"] = "Hello from Emailit SMTP"
msg.set_content("This is my first email sent through the Emailit SMTP relay.")
msg.add_alternative("<p>This is my first email sent through the Emailit SMTP relay.</p>", subtype="html")

with smtplib.SMTP("smtp.emailit.com", 587) as smtp:
    smtp.starttls()
    smtp.login("emailit", os.environ["EMAILIT_API_KEY"])
    smtp.send_message(msg)

print("Accepted by Emailit")
```

Se o script terminar sem exceção, o Emailit aceitou o e-mail.

## Conferir no painel

Acesse **Email API → Emails**. O seu e-mail está no topo da aba **Outgoing**, e o status dele muda de **accepted** para **delivered** quando o servidor do destinatário o aceita. Cada sessão SMTP também aparece em **Email API → Logs** com a origem **SMTP**, para que você veja também os logins com falha e as mensagens rejeitadas.

## Respostas comuns

| Resposta | Causa | Solução |
| --- | --- | --- |
| `535 Authentication failed` | Chave de API errada ou excluída | Use uma chave de API atual como senha. Consulte [Erros 535](/pt/docs/kb/smtp-535-authentication-failed/). |
| `530 From/Sender domain is not verified for this workspace` | O endereço From não está em um domínio verificado | Verifique o domínio ou altere o endereço From. Consulte [Erros 530](/pt/docs/kb/smtp-530-from-domain-not-verified/). |
| `550 Unverified workspaces can only send to workspace members' account emails` | Modo sandbox | Envie para o e-mail da conta de um membro ou solicite o acesso de produção |
| `452 4.4.5 Messages per second limit exceeded` | Mais do que o seu limite por segundo | Diminua o ritmo e tente de novo. Os limites são compartilhados com a API. |
| `452 4.5.3 Daily message limit exceeded` | Você atingiu o limite de hoje | Espere até a meia-noite UTC ou [solicite um aumento](/pt/docs/limits/) |
| Timeout de conexão | A sua rede bloqueia a porta | Tente `2525` ou `2587`. Consulte [Timeouts de conexão](/pt/docs/kb/smtp-connection-timeout-port-25/). |

Para ver todos os códigos de resposta, consulte [Solução de problemas de SMTP](/pt/docs/smtp/troubleshooting/).

## Conectar a sua aplicação

Use as mesmas configurações na sua aplicação ou no seu framework. Estes guias mostram a configuração exata:

  - [Laravel](/pt/docs/frameworks/laravel/)
  - [PHP](/pt/docs/frameworks/php/)
  - [WordPress](/pt/docs/frameworks/wordpress/)
  - [Node.js](/pt/docs/frameworks/nodejs/)
  - [Next.js](/pt/docs/frameworks/nextjs/)
  - [Nuxt](/pt/docs/frameworks/nuxt/)
  - [Python](/pt/docs/frameworks/python/)
  - [Rails](/pt/docs/frameworks/rails/)
  - [Go](/pt/docs/frameworks/go/)
  - [Java](/pt/docs/frameworks/java/)
  - [.NET](/pt/docs/frameworks/dotnet/)

## Próximos passos

  - [Configurações de SMTP](/pt/docs/smtp/settings/): Portas, TLS, tamanho das mensagens e como o Emailit trata os seus cabeçalhos.
  - [Cabeçalhos SMTP](/pt/docs/smtp/headers/): Quais cabeçalhos o Emailit adiciona, altera ou remove.
  - [Configurar webhooks](/pt/docs/webhooks/set-up/): Receba eventos de entrega e de bounce também para os e-mails enviados por SMTP.
  - [API ou SMTP](/pt/docs/get-started/api-or-smtp/): O que a API faz e o SMTP não faz.

---
Fonte: https://emailit.com/pt/docs/quickstart/smtp/
