Enviar por SMTP
Servidor, porta, credenciais, e a única surpresa: o utilizador é ignorado.
Se o sistema que envia só sabe falar SMTP, não é preciso mudar nada nele. As mensagens entram pelo mesmo sítio e saem exactamente da mesma maneira: a mesma assinatura DKIM, o mesmo Return-Path, os mesmos eventos.
As definições
| Servidor | smtp.c-connect.pt |
| Porta | 587 |
| Segurança | STARTTLS |
| Utilizador | qualquer coisa |
| Password | a tua chave de API completa |
A surpresa
O utilizador é ignorado. O servidor não olha para ele; a autenticação está toda na password, que é a chave de API.
Existe porque quase todos os clientes de email e bibliotecas SMTP exigem um
utilizador e recusam-se a autenticar sem ele. Podes pôr o endereço de onde
envias, o nome da aplicação, ou a palavra cconnect. Não muda nada.
Quem decide o remetente é o cabeçalho From de cada mensagem, e aí podes usar
o endereço que quiseres dentro de um domínio teu verificado:
From: Notificações <notificacoes@mail.empresa.pt>
Verificamos o domínio, nunca a caixa.
A autenticação só depois de STARTTLS
O servidor não aceita AUTH em claro. A ligação abre, o cliente pede
STARTTLS, e só depois disso é que a autenticação é aceite. Uma biblioteca
configurada para SSL implícito na porta 465 não vai conseguir ligar-se; usa
STARTTLS na 587.
Um exemplo
Host: smtp.c-connect.pt
Port: 587
Encryption: tls
Username: notificacoes@mail.empresa.pt
Password: cconnect_xxxxxxxxxxxxxxxxxxxxxxxx
Em Laravel, é isto no .env:
MAIL_MAILER=smtp
MAIL_HOST=smtp.c-connect.pt
MAIL_PORT=587
MAIL_ENCRYPTION=tls
MAIL_USERNAME=notificacoes@mail.empresa.pt
MAIL_PASSWORD=cconnect_xxxxxxxxxxxxxxxxxxxxxxxx
MAIL_FROM_ADDRESS=notificacoes@mail.empresa.pt
O que muda em relação à API
Pouco, e vale a pena saber o quê.
- O identificador. A API devolve o
idna resposta; por SMTP ele vai noMessage-IDque escrevemos, e lês-lo exige olhar para o que o servidor respondeu aoDATA. - Os erros. Um
422da API é um código SMTP550com um texto, e o teu cliente pode ou não mostrá-lo. - Um destinatário. Como na API, uma mensagem por pessoa. Vários
RCPT TOna mesma transacção são tratados como mensagens separadas, com estados e eventos separados.
Se estiveres a começar de raiz, usa a API. O SMTP existe para não obrigar ninguém a reescrever um sistema que já funciona.
Quando a autenticação falha
| Resposta | O que é |
|---|---|
535 |
A chave está errada, foi revogada, ou puseste a chave no utilizador e não na password. |
530 |
Tentaste autenticar antes do STARTTLS. |
550 |
A mensagem foi recusada: domínio não verificado, endereço suprimido, ou marketing sem cancelamento de subscrição. |