
A resposta curta: em Node.js usa-se o Nodemailer; em Python, o smtplib que já vem com a linguagem (ou as definições de e-mail do Django). Com a porta 587, a ligação começa sem cifra e passa a cifrada com STARTTLS; com a 465, é cifrada desde o início. Os dados da credencial vão em variáveis de ambiente, nunca escritos no código.
Node.js com o Nodemailer
const nodemailer = require("nodemailer");
const t = nodemailer.createTransport({
host: process.env.SMTP_HOST, port: 587, secure: false, requireTLS: true,
auth: { user: process.env.SMTP_USER, pass: process.env.SMTP_PASSWORD },
});
await t.sendMail({ from: "no-reply@yourcompany.com", to: "ana@example.com",
subject: "Order confirmed", text: "Thank you for your order." });
Com a porta 587, secure: false e requireTLS: true: o Nodemailer faz o STARTTLS e recusa continuar sem cifra. Com a porta 465, troque para port: 465, secure: true.
Python com o smtplib
import os, smtplib
from email.message import EmailMessage
m = EmailMessage()
m["From"], m["To"] = "no-reply@yourcompany.com", "ana@example.com"
m["Subject"] = "Order confirmed"
m.set_content("Thank you for your order.")
with smtplib.SMTP(os.environ["SMTP_HOST"], 587) as s:
s.starttls()
s.login(os.environ["SMTP_USER"], os.environ["SMTP_PASSWORD"])
s.send_message(m)
Para a porta 465 use smtplib.SMTP_SSL(host, 465) e tire a linha do starttls().
Django
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = os.environ["SMTP_HOST"]
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = os.environ["SMTP_USER"]
EMAIL_HOST_PASSWORD = os.environ["SMTP_PASSWORD"]
DEFAULT_FROM_EMAIL = "no-reply@yourcompany.com"
Para a porta 465, EMAIL_PORT = 465 e EMAIL_USE_SSL = True em vez de EMAIL_USE_TLS. Nunca os dois ligados ao mesmo tempo.
| Porta e cifra trocadas são o erro mais comum aqui. secure: true na porta 587, ou starttls() na 465, dão erro de TLS ou ligação que não responde. A regra: 587 com STARTTLS, 465 com TLS. |
Onde guardar os dados
Nas aplicações Node.js e Python do nosso alojamento, as variáveis de ambiente definem-se na própria página da aplicação no cPanel (Setup Node.js App ou Setup Python App). Num VPS, num ficheiro .env fora da pasta pública ou no serviço que arranca a aplicação. Uma credencial para cada aplicação: veja uma credencial por programa.
| Ferramentas de automação também falam SMTP. No n8n, por exemplo, o nó de envio de e-mail aceita estes mesmos dados: veja ligar o n8n ao e-mail. |
|
A aplicação continua sem enviar? Abra um pedido com a mensagem de erro completa, sem a senha. Abrir pedido de suporte |
PRODUTO RECOMENDADO E-mail profissional no seu domínio Caixas com o nome da sua empresa, sem publicidade, com filtro de spam. desde $6.60/mês (plano de 3 anos, com cupão) Ver planos |











