iPORTO iPORTO Logo
v1.0

API SMTP - Envio de E-mails

A API de SMTP da iPORTO permite que você envie e-mails de forma programática através de requisições HTTP. Esta documentação apresenta todos os recursos disponíveis para envio de mensagens.

Endpoint

POST https://api.iporto.com.br/api/panel/application/delivery/smtp/queue/api/delivery

Autenticação

A autenticação é realizada através de Bearer Token no header Authorization. Você pode gerar seu token de API no painel de controle da iPORTO.

Headers Necessários

Header Valor Descrição
Content-Type application/json Formato do corpo da requisição
Accept application/json Formato da resposta esperada
Authorization Bearer {SEU_TOKEN_JWT_AQUI} Token de autenticação da API

Parâmetros da Requisição

Parâmetros Obrigatórios

Parâmetro Tipo Descrição
subject string Assunto do e-mail
from string Endereço de e-mail do remetente
address_to string Endereço de e-mail do destinatário
html_body string Corpo do e-mail em HTML

Parâmetros Opcionais

Parâmetro Tipo Descrição
from_name string Nome de exibição do remetente
attachments array Lista de anexos (veja detalhes abaixo)
headers object Headers personalizados para o e-mail
tags array Tags para categorização e filtros
tracking_settings object Configurações de rastreamento (veja detalhes abaixo)

Estrutura de Attachments

Cada item no array attachments deve conter:

Campo Tipo Descrição
path string URL ou caminho do arquivo a ser anexado
as string Nome do arquivo como será exibido no e-mail
mime string Tipo MIME do arquivo (ex: image/png, application/pdf)

Estrutura de Tracking Settings

Campo Tipo Valores Descrição
track_open string yes / no Rastrear abertura do e-mail
track_link string yes / no Rastrear cliques em links
track_host string Ex: track-s1 Servidor de rastreamento

Exemplo Completo

cURL

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": "Olá! Este é um e-mail da <a href=\"https://iporto.com.br/pricing/smtp\">iPORTO SMTP</a>",
    "attachments": [{
        "path": "https://iporto.com.br/assets/images/logo.png",
        "as": "logo-da-iporto.png",
        "mime": "image/png"
    }],
    "headers": {
        "MinhaChaveUnica": "1984",
        "X-Custom-Header": "valor-personalizado"
    },
    "tags": [
        "newsletter",
        "marketing",
        "id:24"
    ],
    "tracking_settings": {
        "track_open": "yes",
        "track_link": "yes",
        "track_host": "track-s1"
    }
}'

PHP

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.iporto.com.br/api/panel/application/delivery/smtp/queue/api/delivery',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => json_encode([
      'subject' => 'E-mail iPORTO',
      'from' => 'no-reply@iporto.com.br',
      'from_name' => 'iPORTO',
      'address_to' => 'destinatario@exemplo.com',
      'html_body' => 'Olá! Este é um e-mail da <a href="https://iporto.com.br/pricing/smtp">iPORTO SMTP</a>',
      'attachments' => [
          [
              'path' => 'https://iporto.com.br/assets/images/logo.png',
              'as' => 'logo-da-iporto.png',
              'mime' => 'image/png'
          ]
      ],
      'headers' => [
          'MinhaChaveUnica' => '1984'
      ],
      'tags' => ['newsletter', 'marketing', 'id:24'],
      'tracking_settings' => [
          'track_open' => 'yes',
          'track_link' => 'yes',
          'track_host' => 'track-s1'
      ]
  ]),
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json',
    'Accept: application/json',
    'Authorization: Bearer SEU_TOKEN_JWT_AQUI'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

Python

import requests
import json

url = "https://api.iporto.com.br/api/panel/application/delivery/smtp/queue/api/delivery"

payload = json.dumps({
  "subject": "E-mail iPORTO",
  "from": "no-reply@iporto.com.br",
  "from_name": "iPORTO",
  "address_to": "destinatario@exemplo.com",
  "html_body": "Olá! Este é um e-mail da <a href=\"https://iporto.com.br/pricing/smtp\">iPORTO SMTP</a>",
  "attachments": [
    {
      "path": "https://iporto.com.br/assets/images/logo.png",
      "as": "logo-da-iporto.png",
      "mime": "image/png"
    }
  ],
  "headers": {
    "MinhaChaveUnica": "1984"
  },
  "tags": [
    "newsletter",
    "marketing",
    "id:24"
  ],
  "tracking_settings": {
    "track_open": "yes",
    "track_link": "yes",
    "track_host": "track-s1"
  }
})

headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer SEU_TOKEN_JWT_AQUI'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

JavaScript (Node.js)

const axios = require('axios');

const data = {
  subject: "E-mail iPORTO",
  from: "no-reply@iporto.com.br",
  from_name: "iPORTO",
  address_to: "destinatario@exemplo.com",
  html_body: "Olá! Este é um e-mail da <a href=\"https://iporto.com.br/pricing/smtp\">iPORTO SMTP</a>",
  attachments: [
    {
      path: "https://iporto.com.br/assets/images/logo.png",
      as: "logo-da-iporto.png",
      mime: "image/png"
    }
  ],
  headers: {
    MinhaChaveUnica: "1984"
  },
  tags: ["newsletter", "marketing", "id:24"],
  tracking_settings: {
    track_open: "yes",
    track_link: "yes",
    track_host: "track-s1"
  }
};

const config = {
  method: 'post',
  url: 'https://api.iporto.com.br/api/panel/application/delivery/smtp/queue/api/delivery',
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json',
    'Authorization': 'Bearer SEU_TOKEN_JWT_AQUI'
  },
  data: data
};

axios(config)
  .then(function (response) {
    console.log(JSON.stringify(response.data));
  })
  .catch(function (error) {
    console.log(error);
  });

Exemplo Simples (Mínimo Necessário)

Para enviar um e-mail básico, você precisa apenas dos campos obrigatórios:

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": "Meu primeiro e-mail",
    "from": "no-reply@iporto.com.br",
    "address_to": "destinatario@exemplo.com",
    "html_body": "<h1>Olá!</h1><p>Este é meu primeiro e-mail via API.</p>"
}'

Resposta da API

Resposta de Sucesso (200 OK)

{
  "success": true,
  "message": "E-mail enfileirado com sucesso",
  "data": {
    "queue_id": "abc123xyz",
    "status": "queued"
  }
}

Resposta de Erro (400 Bad Request)

{
  "success": false,
  "message": "Erro na validação dos dados",
  "errors": {
    "address_to": ["O campo address_to é obrigatório"],
    "subject": ["O campo subject é obrigatório"]
  }
}

Resposta de Erro de Autenticação (401 Unauthorized)

{
  "success": false,
  "message": "Token inválido ou expirado"
}

Códigos de Status HTTP

Código Descrição
200 Requisição bem-sucedida
400 Erro de validação nos dados enviados
401 Token de autenticação inválido ou ausente
403 Acesso negado
422 Entidade não processável (dados inválidos)
429 Muitas requisições (limite de taxa excedido)
500 Erro interno do servidor

Boas Práticas

  1. Sempre valide os e-mails antes de enviar para garantir que estão em formato válido
  2. Use tags para organizar e filtrar seus envios
  3. Configure o rastreamento para monitorar a performance dos seus e-mails
  4. Armazene o queue_id retornado para consultas futuras sobre o status do envio
  5. Trate erros adequadamente verificando os códigos de status HTTP
  6. Respeite os limites de taxa da API para evitar bloqueios temporários
  7. Use nomes descritivos no campo from_name para melhorar a confiança do destinatário

Limites e Restrições

  • Tamanho máximo do e-mail: 25MB
  • Taxa de requisições: Consulte seu plano no painel de controle

Suporte

Para dúvidas ou problemas com a API, entre em contato com o suporte da iPORTO através do painel de controle ou visite https://iporto.com.br.