iPORTO iPORTO Logo
v1.0

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_AQUI por 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.