API para Validação de E-mail.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
README.md

README.md

iPORTO: Validador de Email

A iPORTO, É uma empresa especialista em ferramentas de Marketing Online, fundada em 2003, com foco em pequenas e médias empresas. SMTP, E-Mail Marketing, Validador de E-mail e ferramentas relacionadas para gerenciamento de Leads e Oportunidades. Sediada em Porto Alegre, RS. Estrutura própria de Servidores e Código.

Introdução a iPORTO e sua API

O objetivo desta documentação é orientar o desenvolvedor sobre como integrar com a API iPORTO o plano Validador de Email, descrevendo as funcionalidades, os métodos a serem utilizados, listando informações a serem enviadas e recebidas, e provendo exemplos.

O mecanismo de integração com o Validador de Email é simples, de modo que apenas conhecimentos intermediários em linguagem de programação para Web, requisições HTTP/HTTPS e manipulação de arquivos JSON, são necessários para implantar a solução Validador de Email com sucesso.

Nesse manual você encontrará a referência sobre todas as operações disponíveis na API REST da API iPORTO, para Validador de Email. Estas operações devem ser executadas utilizando sua Chave de API.

Não é preciso efetuar instalações adicionais para uso da API iPORTO.

Recursos

  • Validação/Verificação de Email.
  • Validação de Email: Sintaxe.
  • Validação de Email: Domínios descartáveis.
  • Validação de Email: Usuários com digitação randômica.
  • Validação de Email: Domínios de instituições financeiras.
  • Validação de Email: Domínios de instituições governamentais.
  • Validação de Email: Domínios de uso gratuito.
  • Validação de Email: Usuários como Nome direto.
  • Validação de Email: Usuários de regra.
  • Validação de Email: Usuários como Trap ou Armadílhas.
  • Validação de Email: Usuários e Domínios conhecidos como Bounces ou Erros.
  • Validação de Email: Domínios como Typing Error.
  • Validação de Email: Domínios com contas Pega Tudo.
  • Validação de Email: Did You Mean ou seja, "Você quis dizer" para sugestões de digitação.
  • Validação de Email: MX.
  • Validação de Email: DNS.
  • Validação de Email: WEB.
  • Validação de Email: Análise de SPAM.
  • Validação de Email: Análise de Entregabilidade.
  • Validação de Email: Análise de Redes Sociais.

Suporte

Após a leitura deste manual, caso ainda persistam dúvidas, a iPORTO disponibiliza um canal de suporte técnico de segunda a sexta-feira, em horário comercial, via Chamado Técnico em sua Central do Cliente:

Uso

Para utilização da API é preciso possuir um cadastro ativo na iPORTO. Um pacote de uso deve ser selecionado diretamente na página de planos disponíveis no site.

Glossário

  • iPORTO: Empresa que provê solução para Validador de Email.
  • Central do Cliente: Ambiente de Cadastro na iPORTO para gerenciamento das Chaves de API e planos seleciondos.
  • Chave de API: Indica uma Chave única que deve ser gerada via Central do Cliente.
  • Email: Correio Eletrônico que será verificado de forma Online tendo como base regras definidas pela iPORTO.
  • Tipo de Plano: Tipo de Plano que foi contratado junto a iPORTO. Esta opção poderá ser Profissional ou Avançado.
  • @todo: Itens que serão disponibilizados no futuro mas que ainda não foram testados para uso final.

Começar a usar

Acesse sua Central do Cliente e gere uma nova Chave de API. É preciso possuir uma Chave de API válida, um cadastro ativo e plano contratado.

Limites

Cada Chave de API permite o limite de até 5.000 requisições ao dia. Para um uso maior, é preciso solicitar liberação através da Central do Cliente, que pode ser verificado na guia Suporte, desta documentação.

EndPoint

Toda requisição tem como base: https://api-v2.iporto.com.br/api-v2/

Requisição

Cada requisição, para Validador de Email, é composta de 2 parâmetros obrigatórios que são @email e @iPORTO_Api_ChavePublica. Todas as requisições devem ser feitas via https.

  • Exemplo de requisição:
curl https://api-v2.iporto.com.br/api-v2/ve_data/get/email/xx@domain.com/iPORTO_Api_ChavePublica/xx/tipoDePlano/Avancado

Resposta

Toda resposta da API utiliza padrão REST, neste caso, RESTful JSON.

Estrutura do Uso

A estrutura de uso tem como base Request e Response. Request indica o envio de dados para a API da iPORTO e Response indica a resposta com os dados formatados.

Estrutura do Request

Propriedade Descrição
string iPORTO_Api_ChavePublica Obrigatório. Chave de API que será utilizada para autorizar a requisição.
string email Obrigatório. Email que será validado.
string tipoDePlano Opcional. Tipo de Plano que será utilizado.

Estrutura da Response

Propriedade Descrição
string jsonapi Versão atual da API.
array meta Dados sobre a API.
array links Links utilizados para Request.
array messages Mensagens sobre Request.
array data Itens retornados sobre Request.

Attributes

Disposição de atributos retornados para cada Request.

{meta}

Array Propriedade Descrição
meta
{} string email Email que foi utilizado para validação.
{} string domain Domínio do Email que foi utilizado para validação.
{} string tld TLD do Domínio do Email que foi utilizado para validação.
{} string subDomain Subdomínio do Domínio do Email que foi utilizado para validação.
{} string user Usuário de Email.
{} string emailMd5 Validação MD5 do Email que foi utilizado para validação.
{} string emailSoundex Validação SOUNDEX do Email que foi utilizado para validação. @todo

{diagnostic}

Array Propriedade Descrição
diagnostic
{} string key Chave que identifica a requisição.
{} string dts Data, Hora, Minuto e Segundo em que a requisição foi iniciada.
{} string dte Data, Hora, Minuto e Segundo em que a requisição foi finalizada.
{} array dtl Histórico com Data, Hora, Minuto e Segundo de cada requisição principal.

{disposition}

Array Propriedade Descrição
disposition
{} boolean isValid Informação de que um Email é realmente válido.
{} boolean isValidFormat Informação de que a sintax de um Email é válido.
{} boolean isDisposable Informação de que um Email utiliza serviços de Emails temporário e são descartáveis.
{} boolean isGibberish Informação de que um Email é do tipo Gibberish ou apenas um Email com digitação randômica.
{} boolean isBank Informação de que o Email é de uma instituição Bancária.
{} boolean isGov Informação de que o Email é de uma instituição Governamental. @todo
{} boolean isFree Informação de que o Email é gratuito.
{} boolean isName Informação de que o Usuário do Email é um Nome Próprio.
{} boolean isRole Informação de que o Email é do tipo Regra de entraga.
{} boolean isTrap Informação de que o Email é uma armadilha para capturar Spam.
{} boolean isKnowError Informação de que o Domínio é conhecido como diversos erros de envio.
{} boolean isTypingError Informação de que o Email ou o Domínio é um erro de digitação.
{} boolean isCatchAll Informação de que o Domínio aceita qualquer tipo de Email, inválido ou não. @todo

{didYouMean}

Array Propriedade Descrição
didYouMean
{} array didYouMean array com sugestões de digitação. @todo

{emailVerification}

Array Array Propriedade Descrição
emailVerification
{} syntaxVerification boolean isSyntaxValid Informação de que Email possui sintaxe válida.
{} dnsVerification boolean isDomainHasDnsRecord Informação de que Domínio possui entrada de DNS.
{} dnsVerification boolean isDomainHasWebRecord Informação de que Domínio possui entrada de DNS A/WEB.
{} dnsVerification boolean isDomainHasMxRecords Informação de que Domínio possui entrada de DNS para Emails/MX.
{} dnsVerification array recordDns Entradas de DNS para Domínio.
{} dnsVerification array recordWeb Entradas de DNS para Domínios no âmbito Web.
{} dnsVerification array recordMx Entradas de DNS para Domínios no âmbito de Emails.
{} mailboxVerification array Verificações de Email com análise Holística.

{infrastructure}

Array Array Propriedade Descrição
infrastructure
{} mail string isSyntaxValid Informação com estrutura de Email utilizada pelo Domínio. @todo

{sendAssess}

Array Propriedade Descrição
sendAssess
{} int inboxQualityScore Verificação de qualidade para Mensagens sejam entregues na Caixa de Entrada dos Usuários.
{} string sendRecommendation Recomendação de que, se, um Email deve ser enviado ou não.
{} string sendStatus Status da última tentativa de envio para o Usário.

{spamAssess}

Array Propriedade Descrição
spamAssess
{} array Análises, em resumo, para a chave disposition.

{social}

Array Propriedade Descrição
social
{} array Análise com avatar e link para Rede Social do Usuário. @todo

Exemplo de Response Json

object(stdClass)#1 (7) {
  ["status"]=>
  int(200)
  ["jsonapi"]=>
  object(stdClass)#2 (1) {
    ["version"]=>
    string(5) "2.0.0"
  }
  ["meta"]=>
  object(stdClass)#3 (3) {
    ["copyright"]=>
    string(10) "iPORTO.COM"
    ["authors"]=>
    array(1) {
      [0]=>
      string(14) "api@iporto.com"
    }
    ["limits"]=>
    object(stdClass)#4 (1) {
      ["maxRequestsPerDay"]=>
      string(4) "5000"
    }
  }
  ["links"]=>
  array(1) {
    [0]=>
    string(99) "/api-v2/ve_data/get/email/xx@domain.com/iPORTO_Api_ChavePublica/xx"
  }
  ["errors"]=>
  NULL
  ["messages"]=>
  array(0) {
  }
  ["data"]=>
  object(stdClass)#5 (2) {
    ["count"]=>
    int(1)
    ["itens"]=>
    array(1) {
      [0]=>
      object(stdClass)#6 (3) {
        ["type"]=>
        string(5) "email"
        ["id"]=>
        NULL
        ["attributes"]=>
        object(stdClass)#7 (9) {
          ["meta"]=>
          object(stdClass)#8 (6) {
            ["email"]=>
            string(16) "xx@domain.com"
            ["domain"]=>
            string(10) "domain.com"
            ["tld"]=>
            string(3) "com"
            ["subDomain"]=>
            NULL
            ["user"]=>
            string(5) "xx"
            ["emailMd5"]=>
            string(32) "65ab4c7baf42aa70b74e8cb7887bd6b5"
          }
          ["diagnostic"]=>
          object(stdClass)#9 (4) {
            ["key"]=>
            string(32) "0f491c593a62b7fd875a68eef924e9a0"
            ["dts"]=>
            string(19) "2017-07-02 15:09:02"
            ["dte"]=>
            string(19) "2017-07-02 15:09:06"
            ["dtl"]=>
            array(7) {
              [0]=>
              array(2) {
                [0]=>
                string(18) "metaHeaderAnalytic"
                [1]=>
                string(19) "2017-07-02 15:09:02"
              }
              [1]=>
              array(2) {
                [0]=>
                string(28) "metaDispositionIsAllAnalytic"
                [1]=>
                string(19) "2017-07-02 15:09:02"
              }
              [2]=>
              array(2) {
                [0]=>
                string(29) "metaEmailVerificationAnalytic"
                [1]=>
                string(19) "2017-07-02 15:09:03"
              }
              [3]=>
              array(2) {
                [0]=>
                string(30) "metaDispositionIsValidAnalytic"
                [1]=>
                string(19) "2017-07-02 15:09:06"
              }
              [4]=>
              array(2) {
                [0]=>
                string(26) "metaInfrastructureAnalytic"
                [1]=>
                string(19) "2017-07-02 15:09:06"
              }
              [5]=>
              array(2) {
                [0]=>
                string(27) "metaSendAssessInboxAnalytic"
                [1]=>
                string(19) "2017-07-02 15:09:06"
              }
              [6]=>
              array(2) {
                [0]=>
                string(35) "metaSendAssessRecomendationAnalytic"
                [1]=>
                string(19) "2017-07-02 15:09:06"
              }
            }
          }
          ["disposition"]=>
          object(stdClass)#10 (12) {
            ["isValid"]=>
            bool(true)
            ["isValidFormat"]=>
            bool(true)
            ["isDisposable"]=>
            bool(false)
            ["isGibberish"]=>
            bool(false)
            ["isBank"]=>
            bool(false)
            ["isFree"]=>
            bool(false)
            ["isName"]=>
            bool(false)
            ["isRole"]=>
            bool(false)
            ["isTrap"]=>
            bool(false)
            ["isKnowError"]=>
            bool(false)
            ["isTypingError"]=>
            bool(false)
            ["isCatchAll"]=>
            bool(false)
          }
          ["didYouMean"]=>
          array(0) {
          }
          ["emailVerification"]=>
          object(stdClass)#11 (3) {
            ["syntaxVerification"]=>
            object(stdClass)#12 (1) {
              ["isSyntaxValid"]=>
              bool(true)
            }
            ["dnsVerification"]=>
            object(stdClass)#13 (6) {
              ["isDomainHasDnsRecord"]=>
              bool(true)
              ["isDomainHasWebRecord"]=>
              bool(true)
              ["isDomainHasMxRecords"]=>
              bool(true)
              ["recordDns"]=>
              array(2) {
                [0]=>
                object(stdClass)#14 (5) {
                  ["host"]=>
                  string(10) "domain.com"
                  ["class"]=>
                  string(2) "IN"
                  ["ttl"]=>
                  int(82358)
                  ["type"]=>
                  string(2) "NS"
                  ["target"]=>
                  string(22) "ns.domain.com"
                }
              }
              ["recordWeb"]=>
              array(1) {
                [0]=>
                object(stdClass)#16 (5) {
                  ["host"]=>
                  string(10) "domain.com"
                  ["class"]=>
                  string(2) "IN"
                  ["ttl"]=>
                  int(300)
                  ["type"]=>
                  string(1) "A"
                  ["ip"]=>
                  string(13) "192.168.0.1"
                }
              }
              ["recordMx"]=>
              array(5) {
                [0]=>
                object(stdClass)#17 (6) {
                  ["host"]=>
                  string(10) "domain.com"
                  ["class"]=>
                  string(2) "IN"
                  ["ttl"]=>
                  int(300)
                  ["type"]=>
                  string(2) "MX"
                  ["pri"]=>
                  int(10)
                  ["target"]=>
                  string(23) "mx.domain"
                }
              }
            }
            ["mailboxVerification"]=>
            array(1) {
              [0]=>
              object(stdClass)#22 (2) {
                ["result"]=>
                string(4) "Good"
                ["reason"]=>
                string(11) "ValidFormat"
              }
            }
          }
          ["infrastructure"]=>
          object(stdClass)#23 (1) {
            ["mail"]=>
            array(1) {
              [0]=>
              NULL
            }
          }
          ["sendAssess"]=>
          object(stdClass)#24 (3) {
            ["inboxQualityScore"]=>
            int(100)
            ["sendRecommendation"]=>
            string(3) "Yes"
            ["sendStatus"]=>
            string(70) "200%200.0.0%20No%20connections%20was%20made"
          }
          ["spamAssess"]=>
          object(stdClass)#25 (10) {
            ["isDisposable"]=>
            bool(false)
            ["isGibberish"]=>
            bool(false)
            ["isBank"]=>
            bool(false)
            ["isFree"]=>
            bool(false)
            ["isName"]=>
            bool(false)
            ["isRole"]=>
            bool(false)
            ["isTrap"]=>
            bool(false)
            ["isKnowError"]=>
            bool(false)
            ["isTypingError"]=>
            bool(false)
            ["isCatchAll"]=>
            bool(false)
          }
          ["social"]=>
          array(1) {
            [0]=>
            NULL
          }
        }
      }
    }
  }
}

Exemplos de Uso

Para utilizar a chamada de API é preciso apenas efetuar uma requisição HTTPS. Toda linguagem de programação que permite uma requisição HTTPS pode ser utilizada. Todos os exemplos utilizarão a variável @endpoint, para uso, é preciso alterar esta variável por sua requisição final, tendo atenção a regra básica para os parâmetros necessários que são @email e @iPORTO_Api_ChavePublica

@endpoint = "https://api-v2.iporto.com.br/api-v2/ve_data/get/email/xx@domain.com/iPORTO_Api_ChavePublica/xx/tipoDePlano/Profissional";

Curl

curl @endpoint

Php

<?php
$get_json = file_get_contents(@endpoint);

Javascript com jQuery

$.getJSON(@endpoint, function(data) {
  get_json = data;
});

Ruby

require "open-uri"
get_json = open(@endpoint).read

Asp Clássico

<%
Set xmlHttp = Server.Createobject("MSXML2.ServerXMLHTTP.6.0")
xmlHttp.Open "GET", @endpoint, False
xmlHttp.Send
_RESTfulResponse = xmlHttp.responseText
xmlHttp.abort()
set xmlHttp = Nothing
get_json = _RESTfulResponse

Contrato

@iPORTO.COM - suporte[]iporto.com