Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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?
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.
Traduzindo então, não existe nenhuma propriedade ligada ao componente Persits.MailSender que possa tratar este retorno né?
Brincadeira.
Obrigado então pela ajuda....
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",](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>Isso, somente com Persits.MailSender você não conseguirá.
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.
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.
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).