SMTP: Exemplos de uso (API x SMTP)
Este guia mostra formas de envio por API (HTTP) e por SMTP tradicional. Use o que fizer mais sentido para sua integração.
Envio via API (HTTP)
Use a API quando quiser acionar envios direto do seu backend, com recursos adicionais como tags, headers customizados e tracking.
curl --location 'https://api.iporto.com.br/api/panel/application/delivery/smtp/queue/api/delivery' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer SEU_TOKEN_JWT_AQUI' \
--data-raw '{
"subject": "E-mail iPORTO",
"from": "no-reply@iporto.com.br",
"from_name": "iPORTO",
"address_to": "destinatario@exemplo.com",
"html_body": "iPORTO! <a href=\"https://iporto.com.br/pricing/smtp\">SMTP</a>",
"attachments": [
{
"path": "https://iporto.com.br/assets/images/logo.png",
"as": "logo-da-iporto.png",
"mime": "image/png"
}
],
"headers": {
"MinhaChaveUnica": "1984",
"a": "a1",
"b": "b1"
},
"tags": ["123456", "iPORTO", "id:24"],
"tracking_settings": {
"track_open": "yes",
"track_link": "yes",
"track_host": "track-s1"
}
}'
Substitua
SEU_TOKEN_JWT_AQUIpor um token válido do seu tenant. Não exponha tokens em apps cliente (use apenas no backend).
Parâmetros do endpoint
| Variável | Descrição |
|---|---|
subject |
Assunto do e‑mail |
from |
E‑mail autenticado/remetente |
from_name |
Nome de exibição |
address_to |
Destinatário |
address_to_cc |
Cópia (opcional) |
html_body |
Corpo em HTML |
attachments[] |
Anexos (veja opções abaixo) |
Anexos
Opção 1 (lista simples de URLs):
"attachments": [
"https://iporto.com.br/assets/images/logo.png"
]
Opção 2 (detalhada):
"attachments": [{
"path": "https://iporto.com.br/assets/images/logo.png",
"as": "logo-da-iporto.png",
"mime": "image/png"
}]
Respostas comuns
- 202 Accepted: mensagem enfileirada para entrega.
- 401/403: token inválido/sem escopo.
- 422: erro de validação no payload.
Python (requests)
import requests
url = 'https://api.iporto.com.br/api/panel/application/delivery/smtp/queue/api/delivery'
headers = {
'Authorization': 'Bearer SEU_TOKEN_JWT_AQUI',
'Accept': 'application/json',
'Content-Type': 'application/json',
}
payload = {
"subject": "E-mail iPORTO",
"from": "no-reply@iporto.com.br",
"from_name": "iPORTO",
"address_to": "destinatario@exemplo.com",
"html_body": "<b>Olá</b> do Python!",
}
resp = requests.post(url, headers=headers, json=payload, timeout=30)
resp.raise_for_status()
print(resp.status_code, resp.text)
Envio via SMTP (cliente de e-mail)
Use SMTP quando já possui biblioteca ou serviço que fala SMTP. Recomendado usar STARTTLS na porta 587.
PHP (PHPMailer)
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtp-avancado.com';
$mail->SMTPAuth = true;
$mail->Username = 'SEU_USUARIO';
$mail->Password = 'SUA_SENHA';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // ou ENCRYPTION_SMTPS
$mail->Port = 587; // 465 para SSL/TLS
$mail->setFrom('no-reply@iporto.com.br', 'iPORTO');
$mail->addAddress('destinatario@exemplo.com');
$mail->Subject = 'Teste iPORTO SMTP';
$mail->Body = 'Olá! Este é um teste.';
$mail->isHTML(true);
$mail->addAttachment('https://iporto.com.br/assets/images/logo.png', 'logo-da-iporto.png');
$mail->send();
Node.js (Nodemailer)
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
host: 'smtp-avancado.com',
port: 587, // 465 para SSL
secure: false, // true para 465
auth: { user: 'SEU_USUARIO', pass: 'SUA_SENHA' },
});
await transporter.sendMail({
from: 'no-reply@iporto.com.br',
to: 'destinatario@exemplo.com',
subject: 'Teste iPORTO SMTP',
html: 'Olá! Este é um teste.',
attachments: [
{ filename: 'logo-da-iporto.png', path: 'https://iporto.com.br/assets/images/logo.png' }
]
});
Python (smtplib)
import smtplib
from email.message import EmailMessage
msg = EmailMessage()
msg["Subject"] = "Teste iPORTO SMTP"
msg["From"] = "no-reply@iporto.com.br"
msg["To"] = "destinatario@exemplo.com"
msg.set_content("Olá! Este é um teste em texto.")
msg.add_alternative("""
<html>
<body>
<p>Olá! Este é um teste com <b>HTML</b>.</p>
</body>
</html>
""", subtype="html")
with smtplib.SMTP("smtp-avancado.com", 587, timeout=30) as smtp:
smtp.starttls()
smtp.login("SEU_USUARIO", "SUA_SENHA")
smtp.send_message(msg)
Teste de TLS (linha de comando)
openssl s_client -starttls smtp -connect smtp-avancado.com:587 -servername smtp-avancado.com
Dicas rápidas
- Prefira 587 + STARTTLS. 465 (SSL/TLS) é alternativa compatível.
- Remetentes devem usar seu domínio validado (SPF/DKIM/DMARC).
- Evite enviar tokens e segredos no front-end. Faça proxied via backend.