- Este tópico contém 8 respostas, 2 vozes e foi atualizado pela última vez 6 anos, 9 meses atrás por
José Laurindo Chiappa.
-
AutorPosts
-
12 de maio de 2018 às 12:50 am #109268
Motta
ParticipantePelo pacote (Package) do Oracle UTL_SMTP tenho como validar um domínio ou até um email sem precisar enviar um email ?
Seria algo como um “ping”.
14 de maio de 2018 às 4:39 pm #109269José Laurindo Chiappa
ModeradorBlz ? Então, a package SMTP só implementa as rotinas de conexão via SMTP e as diretamente relacionadas com manipulação de emails, só e apenas ….
NO SEU caso, abrindo um pouco mais a sua questão, o FATO é que há alguns métodos de validar um email, mas TODOS ELES envolvem enviar pacotes pro servidor de emails, e hoje em dia (por motivos de SEGURANÇA), a Esmagadora Maioria dos servidores de email de Empresas NÂO responde a ping NEM a comandos externos, só admite receber pacotes de fontes externas após login válido…. Leia https://lifehacker.com/5697360/how-to-verify-if-an-email-address-is-real-or-fake , https://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/ , https://www.labnol.org/software/verify-email-address/18220/ e https://www.quora.com/Is-there-a-way-to-check-if-an-e-mail-address-is-valid-without-e-mailing-it para algumas idéias, mas NECESSARIAMENTE NENHUMA das técnicas mostradas é 100% garantida, Exatamente pelo ‘fechamento’, pelas RESTRIÇÕES que hoje em dia se encontra comumente em servidores de email corporativos…
Já se o email que vc quer validar é público/externo (tipo gmail ou yahoo, digamos) aí sim : esse tipo de email por natureza não pode implementar grandes restrições, aí Pode SERque vc consiga …[]s
Chiappa
14 de maio de 2018 às 5:06 pm #109270Motta
ParticipantePesquisando mais achei o método
utl_smtp.vrfyMas não funcionou
--create or replace FUNCTION "VALIDA_EMAIL" (ds_email_destino_p varchar2) RETURN CHAR is
DECLARE
ds_email_destino_p varchar2(70) := '';
l_reply utl_smtp.reply;
vn_code number;
vs_text varchar2(255);
ds_smtp_w varchar2(20) := '......';
/* Abre conex?o SMTP e HTTP */
CONEXAO UTL_SMTP.CONNECTION;
vs_origem char(50) := '....';
BEGIN
/* Abre conex?o com um Servidor SMTP(Simple Mail Transfer Protocol), porta padr?o SMTP e 25 */
CONEXAO := utl_smtp.open_connection (ds_smtp_w,25); --25
UTL_SMTP.HELO (CONEXAO, ds_smtp_w); /* Endereco do servidor de SMTP */
l_reply := utl_smtp.vrfy(CONEXAO,ds_email_destino_p);
vn_code := l_reply.code;
vs_text := l_reply.text;
dbms_output.put_line(vn_code);
dbms_output.put_line(vs_text);
UTL_SMTP.QUIT (CONEXAO);
Exception
when OTHERS then
utl_smtp.quit (conexao);
RAISE_APPLICATION_ERROR(-20011,'Erro: ' || SQLERRM);
END ENVIA_EMAIL;14 de maio de 2018 às 5:07 pm #109271Motta
ParticipanteMeio que desistindo da ideia.
valeu
14 de maio de 2018 às 5:41 pm #109272José Laurindo Chiappa
ModeradorVc ** leu ** os links que indiquei ? Neles se detalham as OUTRAS opções mas ao resumo a coisa é : SE ISSO É PERMITIDO, vc pode pingar o servidor de email, vc pode fazer nslookup, vc pode pedir tracert e similares, o que comprova que O DOMÍNIO/SERVIDOR EM SI existe mas o email não tem jeito, vc TEM que fazer algum tipo de CONEXÃO e como Eu disse antes, QUASE NINGUÉM PERMITE conexão anônima, sem informar usuário e senha, só fazendo acesso TELNET ou similar… OK ????
Infelizmente, houve e há MUITO abuso e envio de SPAM, então hoje é que uma REGRA que ninguém permita acesso via telnet ou similar SEM SE IDENTIFICAR apropriadamente, e (óbvio) o usuário do email informou só o usuário (o email) e não a senha dele…. INVIÁVEL, portanto…Assim sendo, REFORÇO que sua resposta é : vc PROVAVELMENTE PODE validar o domínio/servidor de email (SE ele responder a ping, nslookup, tracert, finder ou quetais : POR MOTIVO SE SEGURANÇA ás vezes até isso é bloqueado em algumas empresas) MAS o endereço de email em si (que normalmente é o usuário do serviço de email) aí NÂO, já que isso Exige conexão anônima (como eu disse, vc Não Sabe a senha do usuário) E por motivos de segurança e pra evitar abusos como SPAM conexão anônima normalmente é PROIBIDA…
[]s
Chiappa
14 de maio de 2018 às 5:56 pm #109273Motta
ParticipanteDe fato já estava com a function quando recebi sua resposta.
Vou ler a documentação mas creio que não vá implementar.
Aqui onde trabalho validar um email é importante mas não é crítico , não sei se vale a pena implementar isto aqui.
De qualquer forma valeu.
14 de maio de 2018 às 9:35 pm #109275José Laurindo Chiappa
ModeradorDepende muito da tua necessidade : se o email vai ser usado pra servir como “chave”, como um dos IDENTIFICADORES do usuário da aplicação (por exemplo), OU então se esse email vai ser usado para que o usuário receba LOGs e RELATÓRIOS importantes do Aplicativo, vale MUITO a pena validar E a maneira mais segura de validar é teu aplicativo de cadastro mandar um email pra conta de email informada e nesse email há um LINK que o usuário tem que clicar – esse cadastro fica Pendente enquanto o usuário não clickar nesse link … MUITAS empresas fazem isso hoje em dia : na Oracle mesmo, se vc criar um usuário em http://www.oracle.com vc vai receber uma msg de email no email informado contendo uma url, só quando vc entrar nessa URL é que o sistema lá deles Ativa o cadastro…
Já se esse email é só uma informação cadastral a mais, um meio de contato alternativo mas não é uma chave lógica, vc possa implementar uma validação mais simples : fazer um ping/nslookup no domínio informado após o @ , tentar a conexão anônima sem informar usuário/senha (como dito, na esmagadora maioria dos casos isso não deve funcionar mas enfim)… Ou ainda, a validação mais simplória de todas é só ver se a conta de email informada segue a sintaxe normalmente exigida de uma conta de email, ie : não começa por número, tem pelo menos 3 caracteres ou algo assim antes do @, depois do @ vem ums string e termina com .com ou .com.br, coisas assim…[]s
Chiappa
14 de maio de 2018 às 9:49 pm #109276Motta
ParticipanteNão , aqui o problema mesmo é comunicação , envio de emails corporativos.
É uma cadastro antigo é tem coisas do tipo gmail.com.br , yahho.com.br etc , muitos casos para um valid.
Peguei casos de naotem@email … pois o valid se resumia a um @ ao menos … usuário tem parte com o Cão… 🙂
Queria algo simplesdo tipo um “ping”, mas já vi que o problema é maior.
Vou tentar outra abordagem mais simples.
Valeu.
14 de maio de 2018 às 10:46 pm #109279José Laurindo Chiappa
ModeradorBlz…
-
AutorPosts
- Você deve fazer login para responder a este tópico.