Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Edwilson Curti

[Resolvido] Detectar endereço de e-mail inválido...

Recommended Posts

Bom gente, acabei resolvendo um problema que estava relacionado aos campos que não possuiam endereços de e-mail preenchidos.

Mas surgiu uma questão que quero tratar antes que aconteça algum erro.

 

Como faço pra detectar se um endereço de e-mail é inválido, após ter enviado o e-mail?

 

Tipo assim, o campo de e-mail está prenchido, o e-mail foi enviado, mas de repente ele chega lá e retorna é claro uma mensagem indicando que aquele end. de e-mail é invalido.

 

Como faço pra detectar isto?

 

Eis meu código:

 

Set Mail = Server.CreateObject("Persits.MailSender")
Mail.IsHTML = True
Mail.Host = Application("IPServidor")
Mail.From = "suporte@sox.com.br" 'Remetente
Mail.FromName = "SOX" 'nome do remetente

Mail.AddAddress rsUsuario("UsuEmail") 'endereço do destinatário , nome do destinatário 
Mail.Subject = "Você foi Qualificado" 'assunto
 Mail.Body = "Caro(a) "&rsUsuario("UsuNome") &_ 				 	 	"<br><br>Temos a satisfação de comunicar, que a empresa "&rsEmpresa("EmpNomeFantasia")&",atraves do comprador "&rsUsuarioAtual("UsuNome")&",   tel:"&rsUsuarioAtual("UsuTelefone1")&" o qualificou como parceiro para fornecimento de materiais ou serviços em suas futuras coletas de preços." 
					
Mail.Send 
Set Mail = Nothing

Agradeço se alguém puder me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode verificar se o e-mail segue os padrões de e-mail utilizando funções para isso (dê uma olhada no laboratório de scripts).

 

Mas antes de enviar você não consegue saber se o endereço realmente existe.

 

E depois de enviado, acredito que o máximo que você consegue fazer é acessar a caixa de e-mail usando algum componente que dê suporte a POP3, e verificar se tem alguma mensagem de erro, caso tenha busca pelo e-mail (acho isso inviável).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas é justamente o que eu desejo, ou seja, digamos que o endereço de e-mail cadastrado já não exista mais e a pessoa/empresa que o cadastrou utilize outro e-mail, mas não atualizou seu cadastro.

 

Eu mando um e-mail, será que o sistema de envio não detecta uma reação de não existencia do -e-mail, assim tipo imediatamente após o envio dele?

 

O que me diz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certamente não, pois você envia utilizando um servidor SMTP.

 

Seu sistema faz o papel do Outlook. A diferença é que ele não acessa POP3. Você teria que implementar um filtro que reconhecesse o cabeçalho de erro e separesse o e-mail utilizado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este código, você deve ter o MSXML3.0 instalado, faz requisicao a um WebService

   <HTML>
   <%@LANGUAGE="VBScript"%>
   <%
   Dim email
   Dim status
   Dim emaildata
   if Request.Form.Count > 0 Then
	'Requierimentos Microsoft XML SDK 3,0 disponível na msdn.microsoft.com. 
	 `Preencher os dados	email = Request.Form("email")
	
	' Chama Webservice 
	 Dim oXMLHTTP
	 
	 ' Chama o serviço Web para obter um documento XML
	 Set oXMLHTTP = server.CreateObject("Msxml2.ServerXMLHTTP")
	 oXMLHTTP.Open "POST", _
	"http://ws.cdyne.com/emailverify/ev.asmx/VerifyEmail", _
	False
	 oXMLHTTP.setRequestHeader "Content-Type", _
	 "application/x-www-form-urlencoded"
	 oXMLHTTP.send "email=" & server.URLEncode(email) 
	 Response.Write oxmlhttp.status
	 if oXMLHTTP.Status = 200 Then
	  Dim oDOM
	  Set oDOM = oXMLHTTP.responseXML
	  Dim oNL
	  Dim oCN
	  Dim oCC
	  Set oNL = oDOM.getElementsByTagName("ReturnIndicator")
	  For Each oCN In oNL
	  For Each oCC In oCN.childNodes
	 Select Case LCase(oCC.nodeName)
	  Case "responsetext"
	 emaildata = emaildata & "CodeTxt: " & occ.text & "<BR>"
	  Case "responsecode"
	 emaildata = emaildata & "Code: " & occ.text & "<BR>"
	 End Select
	  Next
	  Next
	  if status = "" Then status = "OK"
	  Set oCC = Nothing
	  Set oCN = Nothing
	  Set oNL = Nothing
	  Set oDOM = Nothing
	  
	  
	  
	 
	 Else
	 Status = "Serviço indisponível. Tente novamente mais tarde"
	 End if
	 Set oXMLHTTP = Nothing
	
   End if
   %>
   <HEAD>
   <BODY><FORM method="POST" action="">
   <P>Checar email<BR>
   <INPUT type="text" name="email" size="40" value="<%=email%>"></P><%=status %>
   <P><INPUT type="submit" value="Check Email" name="B1"></P>
   <P><%=emaildata%></P>
   </FORM></BODY>
   </HTML>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso, somente com Persits.MailSender você não conseguirá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desde sexta andei pesquisando um meio de tratar o erro de envio de e-mail´s para contas não mais existentes ou endereços errados.

 

Cheguei a seguinte conclusão:

 

O retorno de erro de um e-mail inválido ou para uma conta inexistente, não tem nada a ver com o sucesso ou não do envio do e-mail.

Esta parte é de responsabilidade única e exclusiva do servido SMTP.

 

Ainda que o servidor para o qual enviamos um e-mail retorne um erro, a função mail no ASP não consegue capturar este retorno, por um motivo muito simples:

 

Como o retorno do SMTP muitas vezes está atrelado à resposta de um outro servidor de e-mail, não há como garantir que este retorno chegará em tempo de ser processado pelo interpretador da linguagem.

 

Então é isso aí.

 

Agradeço a ajudas dos hermanos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é... foi o que eu disse. Quem vai receber a msg de erro, é a conta de e-mail que fez o envio. Logo você vai ter que acessar essa conta e verificar os e-mails que ela possui, separar os que possuem mensagem de erro e verificar.

 

É algo muito trabalhoso. Para ser feito, tem que valer muito apena.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.