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.
| 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
- Sempre valide os e-mails antes de enviar para garantir que estão em formato válido
- Use tags para organizar e filtrar seus envios
- Configure o rastreamento para monitorar a performance dos seus e-mails
- Armazene o queue_id retornado para consultas futuras sobre o status do envio
- Trate erros adequadamente verificando os códigos de status HTTP
- Respeite os limites de taxa da API para evitar bloqueios temporários
- 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.