Ir para conteúdo

POWERED BY:

Arquivado

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

Mrweb

Validar Mailing

Recommended Posts

Pessoal, tenho um sistema de newsletter e preciso validar os emails que estão no banco.

 

O codigo abaixo faz a validação de cada email, porém não esta contando os corretos e os invalidos, o que pode estar ocorrendo.

 

correto= 0errado = 0For Cont = 1 to objRS.PageSize	email=objRS("email")	If FncBinCheckMail(objRS("email")) = False Then	errado= errado + 1	Response.Write(objRS("email"))	else	correto= correto + 1	End if	objRS.MoveNextIf objRS.EOF Then Exit ForNext

Compartilhar este post


Link para o post
Compartilhar em outros sites

onde está a função FncBinCheckMail???você pode usar uma expresão regular pra fazer essa verificação

Compartilhar este post


Link para o post
Compartilhar em outros sites

onde está a função FncBinCheckMail???você pode usar uma expresão regular pra fazer essa verificação

A funcao ta funcionando beleza, eu so não consigo contabilizar a quantidade de corretos e invalidos o contador nao adiciona mais um, dei um response.write no objrs("email") e ta correndo legal.mas por que não adiciona 1 cada vez que passa na viavel?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se quer testar todos dever varrer até o EOF do seu RecordSet e não até o PageSize.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa escrever a variavel

correto= 0errado = 0For Cont = 1 to objRS.PageSize	email=objRS("email")	If FncBinCheckMail(objRS("email")) = False Then	errado= errado + 1	Response.Write(objRS("email"))	else	correto= correto + 1	End if	objRS.MoveNextIf objRS.EOF Then Exit ForNextresponse.write("total correto: "&correto&"<br>total errado: "&errado)

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa escrever a variavel

correto= 0errado = 0For Cont = 1 to objRS.PageSize	email=objRS("email")	If FncBinCheckMail(objRS("email")) = False Then	errado= errado + 1	Response.Write(objRS("email"))	else	correto= correto + 1	End if	objRS.MoveNextIf objRS.EOF Then Exit ForNextresponse.write("total correto: "&correto&"<br>total errado: "&errado)
Jonathan é exatamente isso que eu preciso varrer ate ser o final de arquivo, agora sim ta funcionando so não entendo por que nao conta, to postando o codigo completo pra você ver.
<%Session.LCID = 1046Response.Buffer = True %><html><head><body><%Function FncBinCheckMail(StrMail)If InStr(1, StrMail, " ") > 0 ThenFncBinCheckMail = FalseExit FunctionEnd IfIf Len(FncStrSpace(StrMail)) < 6 ThenFncBinCheckMail = FalseExit FunctionEnd IfIf InStr(FncStrSpace(StrMail), "@") = 0 ThenFncBinCheckMail = FalseExit FunctionEnd IfIf InStr(FncStrSpace(StrMail), ".") = 0 ThenFncBinCheckMail = FalseExit FunctionEnd IfIf Len(FncStrSpace(StrMail)) - InStrRev(FncStrSpace(StrMail), ".") > 3 ThenFncBinCheckMail = FalseExit FunctionEnd IfIf InStr(FncStrSpace(StrMail), "_") <> 0 And InStrRev(StrMail, "_") > InStrRev(FncStrSpace(StrMail), "@") ThenFncBinCheckMail = FalseExit FunctionElseDim IntCounterDim IntFIntCounter = 0For IntF = 1 To Len(FncStrSpace(StrMail))If Mid(StrMail, IntF, 1) = "@" ThenIntCounter = IntCounter + 1End IfNextIf IntCounter > 1 ThenFncBinCheckMail = TrueEnd IfIntF = 0For IntF = 1 To Len(FncStrSpace(StrMail))If IsNumeric(Mid(FncStrSpace(StrMail), IntF, 1)) = False And _(LCase(Mid(FncStrSpace(StrMail), IntF, 1)) < "a" Or _LCase(Mid(FncStrSpace(StrMail), IntF, 1)) > "z") And _Mid(FncStrSpace(StrMail), IntF, 1) <> "_" And _Mid(FncStrSpace(StrMail), IntF, 1) <> "." And _Mid(FncStrSpace(StrMail), IntF, 1) <> "-" ThenFncBinCheckMail = TrueEnd IfNextEnd IfEnd FunctionFunction FncStrSpace(StrAddress)FncStrSpace = Trim(LTrim(RTrim(StrAddress)))End Function		campanha=request.QueryString("campanha")	Session("campanha")=campanha	'Declara as variaveis a serem usadas neste scriptDim pagina_atual, total_paginas, ComandoSQL, objRS, objRS_atualiza, Conexao, status_envio, correto, errado'Numero de registros por pagina Const registros_por_pagina = 30'Verifica o numero da pagina de registros a ser consultadaIf Request.QueryString("pagina_atual") = "" Or Request.QueryString("pagina_atual") = "0" Thenpagina_atual = 1Elsepagina_atual = Request("pagina_atual")End If'Cria conexao com o banco de dados, informe corretamente o caminho do banco de dadosSet Conexao = Server.CreateObject("ADODB.Connection")Conexao.Open "Provider=SQLOLEDB;SERVER=localhost;DATABASE=xxx;UID=xxx;PWD=xxx"str2="select count(*) as total from subscriber_list"ComandoSQL = ("select email from subscriber_list where campanha='"&Session("campanha")&"'")Set Ors10=Conexao.execute(ComandoSQL)Set objRS = Server.CreateObject("ADODB.Recordset")objRS.CursorLocation = 3objRS.CursorType = 2objRS.LockType = 1objRS.CacheSize = registros_por_paginaobjRS.Open ComandoSQL, Conexao,,, &H0001objRS.PageSize = registros_por_paginastatus = ""If Not objRS.EOF Then'Informa o numero da pagina a ser utilizadaobjRS.AbsolutePage = pagina_atual'Captura o numero total de paginas criadastotal_paginas = objRS.PageCountstatus_envio = status_envio & Fix((pagina_atual*100)/total_paginas) & "% Validado<br>"correto= 0errado = 0For Cont = 1 to objRS.PageSize	email=objRS("email")	If FncBinCheckMail(objRS("email")) = False Then	errado= errado + 1	Response.Write(objRS("email"))	else	correto= correto + 1	End if	objRS.MoveNextIf objRS.EOF Then Exit ForNext%><html><head><title>Valida Mailing</title></head><body><%If Int(pagina_atual) < Int(total_paginas) Then%>	<%'Informa o status do envio da newsletterResponse.Write "<br>" & "<br>" &  "<br>" & "<br>" & "<br>" & "<br>" & "<br>" & "<p align=center>" & status_envio'Codigo JavaScript para atualizar a pagina e enviar os proximos emails, neste caso, a cada 5 segundos%><br><br><br><br><br><br><p align="center">Aguarde a validação do mailing...<script LANGUAGE="JavaScript"><!--function atualiza(){document.location.href = "<%=Request.ServerVariables("SCRIPT_NAME")%>?pagina_atual=<%=pagina_atual+1%>&campanha=<%=Session("campanha")%>&errado=<%=errado%>&correto=<%=correto%>"}setTimeout("atualiza()",5000);//--></SCRIPT></p><%Else%><br><br><br><br><br><br><p align="center">Validação Concluida.<p align="center">Total de Emails Corretos  <%=correto%><p align="center">Total de Emails invalidos <%=errado%><%End IfEnd If%></body></html><%Conexao.CloseSet Conexao = NothingSet pagina_atual = NothingSet total_paginas = NothingSet ComandoSQL = NothingSet objRS = NothingSet objRS_atualiza = Nothing'Set Conexao = NothingSet status_envio = Nothing%><!--#include file="footer.asp"-->

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa escrever a variavel

correto= 0errado = 0For Cont = 1 to objRS.PageSize	email=objRS("email")	If FncBinCheckMail(objRS("email")) = False Then	errado= errado + 1	Response.Write(objRS("email"))	else	correto= correto + 1	End if	objRS.MoveNextIf objRS.EOF Then Exit ForNextresponse.write("total correto: "&correto&"<br>total errado: "&errado)
Jonathan é exatamente isso que eu preciso varrer ate ser o final de arquivo, agora sim ta funcionando so não entendo por que nao conta, to postando o codigo completo pra você ver.
<%Session.LCID = 1046Response.Buffer = True %><html><head><body><%Function FncBinCheckMail(StrMail)If InStr(1, StrMail, " ") > 0 ThenFncBinCheckMail = FalseExit FunctionEnd IfIf Len(FncStrSpace(StrMail)) < 6 ThenFncBinCheckMail = FalseExit FunctionEnd IfIf InStr(FncStrSpace(StrMail), "@") = 0 ThenFncBinCheckMail = FalseExit FunctionEnd IfIf InStr(FncStrSpace(StrMail), ".") = 0 ThenFncBinCheckMail = FalseExit FunctionEnd IfIf Len(FncStrSpace(StrMail)) - InStrRev(FncStrSpace(StrMail), ".") > 3 ThenFncBinCheckMail = FalseExit FunctionEnd IfIf InStr(FncStrSpace(StrMail), "_") <> 0 And InStrRev(StrMail, "_") > InStrRev(FncStrSpace(StrMail), "@") ThenFncBinCheckMail = FalseExit FunctionElseDim IntCounterDim IntFIntCounter = 0For IntF = 1 To Len(FncStrSpace(StrMail))If Mid(StrMail, IntF, 1) = "@" ThenIntCounter = IntCounter + 1End IfNextIf IntCounter > 1 ThenFncBinCheckMail = TrueEnd IfIntF = 0For IntF = 1 To Len(FncStrSpace(StrMail))If IsNumeric(Mid(FncStrSpace(StrMail), IntF, 1)) = False And _(LCase(Mid(FncStrSpace(StrMail), IntF, 1)) < "a" Or _LCase(Mid(FncStrSpace(StrMail), IntF, 1)) > "z") And _Mid(FncStrSpace(StrMail), IntF, 1) <> "_" And _Mid(FncStrSpace(StrMail), IntF, 1) <> "." And _Mid(FncStrSpace(StrMail), IntF, 1) <> "-" ThenFncBinCheckMail = TrueEnd IfNextEnd IfEnd FunctionFunction FncStrSpace(StrAddress)FncStrSpace = Trim(LTrim(RTrim(StrAddress)))End Function		campanha=request.QueryString("campanha")	Session("campanha")=campanha	'Declara as variaveis a serem usadas neste scriptDim pagina_atual, total_paginas, ComandoSQL, objRS, objRS_atualiza, Conexao, status_envio, correto, errado'Numero de registros por pagina Const registros_por_pagina = 30'Verifica o numero da pagina de registros a ser consultadaIf Request.QueryString("pagina_atual") = "" Or Request.QueryString("pagina_atual") = "0" Thenpagina_atual = 1Elsepagina_atual = Request("pagina_atual")End If'Cria conexao com o banco de dados, informe corretamente o caminho do banco de dadosSet Conexao = Server.CreateObject("ADODB.Connection")Conexao.Open "Provider=SQLOLEDB;SERVER=localhost;DATABASE=xxx;UID=xxx;PWD=xxx"str2="select count(*) as total from subscriber_list"ComandoSQL = ("select email from subscriber_list where campanha='"&Session("campanha")&"'")Set Ors10=Conexao.execute(ComandoSQL)Set objRS = Server.CreateObject("ADODB.Recordset")objRS.CursorLocation = 3objRS.CursorType = 2objRS.LockType = 1objRS.CacheSize = registros_por_paginaobjRS.Open ComandoSQL, Conexao,,, &H0001objRS.PageSize = registros_por_paginastatus = ""If Not objRS.EOF Then'Informa o numero da pagina a ser utilizadaobjRS.AbsolutePage = pagina_atual'Captura o numero total de paginas criadastotal_paginas = objRS.PageCountstatus_envio = status_envio & Fix((pagina_atual*100)/total_paginas) & "% Validado<br>"correto= 0errado = 0For Cont = 1 to objRS.PageSize	email=objRS("email")	If FncBinCheckMail(objRS("email")) = False Then	errado= errado + 1	Response.Write(objRS("email"))	else	correto= correto + 1	End if	objRS.MoveNextIf objRS.EOF Then Exit ForNext%><html><head><title>Valida Mailing</title></head><body><%If Int(pagina_atual) < Int(total_paginas) Then%>	<%'Informa o status do envio da newsletterResponse.Write "<br>" & "<br>" &  "<br>" & "<br>" & "<br>" & "<br>" & "<br>" & "<p align=center>" & status_envio'Codigo JavaScript para atualizar a pagina e enviar os proximos emails, neste caso, a cada 5 segundos%><br><br><br><br><br><br><p align="center">Aguarde a validação do mailing...<script LANGUAGE="JavaScript"><!--function atualiza(){document.location.href = "<%=Request.ServerVariables("SCRIPT_NAME")%>?pagina_atual=<%=pagina_atual+1%>&campanha=<%=Session("campanha")%>&errado=<%=errado%>&correto=<%=correto%>"}setTimeout("atualiza()",5000);//--></SCRIPT></p><%Else%><br><br><br><br><br><br><p align="center">Validação Concluida.<p align="center">Total de Emails Corretos  <%=correto%><p align="center">Total de Emails invalidos <%=errado%><%End IfEnd If%></body></html><%Conexao.CloseSet Conexao = NothingSet pagina_atual = NothingSet total_paginas = NothingSet ComandoSQL = NothingSet objRS = NothingSet objRS_atualiza = Nothing'Set Conexao = NothingSet status_envio = Nothing%><!--#include file="footer.asp"-->
Você está enviando os valores de correto e errado pela URL na função javascript porém não está capturando esses valores no início da página. Além disso, você os define como 0 novamente no meio do código. Ele vai sempre somar os certos e errados da página atual e zerar ao recarregar a página. É este o problema que você se refere?Abs

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.