Ir para conteúdo

POWERED BY:

Arquivado

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

marcelocardoso

Newsletter funcionando, mas envia tudo errado e duplicado

Recommended Posts

Irmãos....

 

Peguei este script abaixo aqui no SUPERASP, e não estou conseguindo funcionar direito. Tenho ele funcionando normalmente, ele me envia mensagem e até recebo no outlook.

 

Agora o problema é que acontece que não estou sabendo o porque? Vejam SÓ:

 

1) No exemplo do meu banco tenho 03 emails apenas, entro no script e mando as mensagens através do scriupt e ele até envia para os 3 emails, mas só que me mostra para cada email recebido 03 X a mesma mensagem. Ok

 

2) E se eu tiver 08 emails no banco ele envia para cada email 8 X a mensagem... entenderam mais ou menos oque está acontecendo... ( pois eu não sei, pois nunca fiz nada de envio de newsletter ) e já não estou dormindo tentando resolver isso, e não sei como, até porque; não tenho experiência, mas aí vai o meu script completo apdaptado do do site aí superasp, para me ajudarem...

 

<!--#include file="conexao.asp" --><!--#include file="datahora.asp" --><%'DEIXAMOS O BUFFER LIGADO ScriptTimeOut   = 9999 Response.Buffer = True 'DECLARAMOS AS VARIAVEIS A SEREM USADAS NESTE SCRIPT Dim pagina_atual Dim total_paginas Dim SQL Dim ObjRS Dim ObjRS_atualiza Dim ObjCX Dim status_envio  'NÚMERO DE REGISTROS POR PÁGINA (setado para 10 emails por vez) CONST registros_por_pagina = 10'VERIFICAREMOS O NÚMERO DA PÁGINA DE REGISTROS A SER CONSULTADA IF Request.QueryString("pagina_atual") = "" OR Request.QueryString("pagina_atual") = "0" THEN	pagina_atual = 1	ELSE	pagina_atual = Request("pagina_atual") END IF'CAPTUREMOS AGORA O EMAIL DOS REGISTROS TABELA PELA ORDEM ALFABÉTICA SQL = "SELECT * FROM Newsletter WHERE Opcao = TRUE ORDER BY Email ASC" SET ObjRS = Server.CreateObject("ADODB.RECORDSET")	 ObjRS.CursorLocation = 3	 ObjRS.CursorType = 2	 ObjRS.LockType = 1	 ObjRS.CacheSize = registros_por_pagina	 ObjRS.Open SQL, ObjCX	 ObjRS.PageSize = registros_por_pagina		   status = ""	     IF NOT ObjRS.EOF THEN 	 'INFORMAREMOS O NÚMERO DA PÁGINA A SER UTILIZADA ObjRS.AbsolutePage = pagina_atual'CAPTURAREMOS O NÚMERO TOTAL DE PÁGINAS CRIADAS total_paginas = ObjRS.PageCount'CALCULAREMOS O PERCENTUAL DE EMAILS ENVIADOS ATÉ O MOMENTO status_envio = status_envio & Fix((pagina_atual*100)/total_paginas) & "% concluído.<br>"'PERCORREREMOS TODOS OS REGISTROS DA PÁGINA ATUAL PARA CAPTURARMOS OS EMAILS A SEREM ENVIADOS PELA NEWSLETTER FOR Cont = 1 TO ObjRS.PageSize'CAPTURAREMOS OS DADOS A SEGUIR PARA USARMOS NO SCRIPT campo_PASTA  = "manager_newsletters/" campo_NOME   = ObjRS("Nome") campo_MAIL   = ObjRS("Email") campo_ID	 = ObjRS("ID") campo_DATA   = Date() 'VERIFICAREMOS QUAL TEMPLATE FOI ESCOLHIDA		 Dim TEMPLATE			   Salvar = Request("modelo")	TEMPLATE = Salvar	 SELECT CASE TEMPLATE		CASE "1" 'MENSAGEM DE NATAL campo_FALA   = Replace(Replace(Replace(Request.Form("campo_descricao"),"'",""),"<P>",""),"</P>","") Mensagem = Mensagem & "<HTML>" Mensagem = Mensagem & "<HEAD>" Mensagem = Mensagem & "<TITLE>NEWSLETTER</TITLE>" Mensagem = Mensagem & ""& campo_FALA &"" Mensagem = Mensagem & "TESTE 01 - Apenas estou testando para ver se funciona" Mensagem = Mensagem & "<a href=""/removemail.asp?email="& campo_MAIL &"" Mensagem = Mensagem & "</BODY>" Mensagem = Mensagem & "</HTML>" CASE "2"'MENSAGEM DE ANIVERSÁRIO campo_FALA   = Replace(Replace(Replace(Request.Form("campo_descricao"),"'",""),"<P>",""),"</P>","")  Mensagem = Mensagem & "<HTML>" Mensagem = Mensagem & "<HEAD>" Mensagem = Mensagem & "<TITLE>NEWSLETTER</TITLE>" Mensagem = Mensagem & ""& campo_FALA &"" Mensagem = Mensagem & "TESTE 02 - Apenas estou testando para ver se funciona" Mensagem = Mensagem & "<a href=""/removemail.asp?email="& campo_MAIL &"" Mensagem = Mensagem & "</BODY>" Mensagem = Mensagem & "</HTML>"CASE "3"  'MENSAGEM DE PROMOÇÃO campo_FALA   = Replace(Replace(Replace(Request.Form("campo_descricao"),"'",""),"<P>",""),"</P>","") Mensagem = Mensagem & "<HTML>" Mensagem = Mensagem & "<HEAD>" Mensagem = Mensagem & "<TITLE>NEWSLETTER</TITLE>" Mensagem = Mensagem & ""& campo_FALA &"" Mensagem = Mensagem & "TESTE 03 - Apenas estou testando para ver se funciona" Mensagem = Mensagem & "<a href=""/removemail.asp?email="& campo_MAIL &"" Mensagem = Mensagem & "</BODY>" Mensagem = Mensagem & "</HTML>"CASE "4" campo_FALA   = Replace(Replace(Replace(Request.Form("campo_descricao"),"'",""),"<P>",""),"</P>","") Mensagem = Mensagem & "<HTML>" Mensagem = Mensagem & "<HEAD>" Mensagem = Mensagem & "<TITLE>NEWSLETTER</TITLE>" Mensagem = Mensagem & ""& campo_FALA &"" Mensagem = Mensagem & "TESTE 04 - Apenas estou testando para ver se funciona" Mensagem = Mensagem & "<a href=""/removemail.asp?email="& campo_MAIL &"" Mensagem = Mensagem & "</BODY>" Mensagem = Mensagem & "</HTML>"CASE "5"  'MENSAGEM PADRAO 2 campo_FALA   = Replace(Replace(Replace(Request.Form("campo_descricao"),"'",""),"<P>",""),"</P>","") Mensagem = Mensagem & "<HTML>" Mensagem = Mensagem & "<HEAD>" Mensagem = Mensagem & "<TITLE>NEWSLETTER</TITLE>" Mensagem = Mensagem & ""& campo_FALA &"" Mensagem = Mensagem & "TESTE 05 - Apenas estou testando para ver se funciona" Mensagem = Mensagem & "<a href=""/removemail.asp?email="& campo_MAIL &"" Mensagem = Mensagem & "</BODY>" Mensagem = Mensagem & "</HTML>"CASE ELSE		  ERRO = ERRO & "<table width=""90%"" border=""0"" align=""center"" cellpadding=""2"" cellspacing=""2"">"		  ERRO = ERRO & "  <tr>"		  ERRO = ERRO & "	<td> </td>"		  ERRO = ERRO & "  </tr>"		  ERRO = ERRO & "  <tr>"		  ERRO = ERRO & "	<td><div align=""center"" class=""TEXTO-SENHAS"">OCORREU UM ERRO! </div></td>"		  ERRO = ERRO & "  </tr>"		  ERRO = ERRO & "  <tr>"		  ERRO = ERRO & "	<td><div align=""center"">Você não escolheu nenhum caso, portanto retorne e selecione um <br>"		  ERRO = ERRO & "	  template para poder usar o script. </div></td>"		  ERRO = ERRO & "  </tr>"		  ERRO = ERRO & "  <tr>"		  ERRO = ERRO & "	<td> </td>"		  ERRO = ERRO & "  </tr>"		  ERRO = ERRO & "  <tr>"		  ERRO = ERRO & "	<td><div align=""center""><a href=""seleciona.asp"" target=""frame_centro"" class=""LINK3"">Retornar</a></div></td>"		  ERRO = ERRO & "  </tr>"		  ERRO = ERRO & "</table>"	  Response.Write ERRO  Response.EndEND SELECT 'Response.Write Mensagem 'Response.End  '::::::::::::::::::::::::::::::::': USANDO O CDONTS			  :':::::::::::::::::::::::::::::::: SET CDONTS = Server.CreateObject("CDONTS.NewMail") 'INFORMAREMOS O EMAIL DO REMETENTE, O TÍTULO DO EMAIL E OUTRAS INFORMAÇÕES DE CONFIGURAÇÕES DO OBJETO DE CDONTS	 CDONTS.TO		 = campo_MAIL	 CDONTS.FROM	   = "MMC  <marmmc@pop.com.br>"	 CDONTS.SUBJECT	= "Newsletter Informativo - [ " & campo_DATA & " ]"	 CDONTS.Importance = 2	 CDONTS.BodyFormat = 0	 CDONTS.MailFormat = 0	 CDONTS.Body	   = Mensagem	 CDONTS.Send  'ELIMINAREMOS APÓS O ENVIO DA MENSAGEM A VARIAVEL DA MEMÓRIA SET CDONTS = NOTHING 'IREMOS AGORA PARA O PRÓXIMO REGISTRO DA PÁGINA, OU SEJA; PARA O PRÓXIMO EMAIL DO BANCO DE DADOS	ObjRS.MoveNext IF ObjRS.EOF THEN EXIT FOR NEXT%><HTML><HEAD><TITLE>Newsletter</TITLE><link href="css_2.css" rel="stylesheet" type="text/css"><style type="text/css"><!--.style1 {color: #336699;font-weight: bold;}.style2 {color: #CC0000}--></style></HEAD><BODY><% IF Int(pagina_atual) < Int(total_paginas) THEN'APÓS O CÓDIGO JAVASCRIPT PARA ATUALIZARMOS A PÁGINA PARA ENVIAR OS PRÓXIMOS EMAILS, NESTE CASO; A CADA 5 SEGUNDOS%><table width="30%" border="0" align="center" cellpadding="2" cellspacing="2" bordercolor="#FF9900" bgcolor="#FF9900" class="INPUT_CHECKBOX">  <tr>	<td height="50" bgcolor="#FFFFFF" class="TEXTO-TITULO-10p"><div align="center" class="TEXTO-DICAS1 style2"><br>	  <span class="style1">	  <%= Status_Envio %>	  </span><br><br>	  Aguarde o envio das novidades para <br>os emails cadastrados...<br><br>	</div></td>  </tr></table><script LANGUAGE="JavaScript">function atualiza(){		 document.location.href = "<%=REQUEST.SERVERVARIABLES("SCRIPT_NAME") %>?pagina_atual=<%= pagina_atual + 1 %>"				  }		 setTimeout("atualiza();",5000);</script><%'CASO CONTRÁRIO SE O ENVIO JÁ TENHA CHEGADO AO FIM, APRESENTAREMOS O CÓDIGO ABAIXO ELSE'INFORMAREMOS QUE O ENVIO DA NEWSLETTER FOI CONCLUIDO%><table width="50%" border="0" align="center" cellpadding="2" cellspacing="2" bordercolor="#FF9900" bgcolor="#FF9900" class="BORDER3">  <tr>	<td height="100" class="TEXTO-TITULO2-BOLD"><div align="center" class="TEXTO-TITULO2-BOLD">SUAS NOVIDADES  foram enviadas com sucesso!.</div></td>  </tr></table><%END IFEND IF%></BODY></HTML><%'FECHA A CONEXÂO COM O BANCO DE DADOS   ObjRS.Close   ObjCX.Close'ELIMINAREMOS AS VARIÁVEIS DA MEMÓRIA DO SERVIDOR SET pagina_atual = NOTHING SET total_paginas = NOTHING SET SQL = NOTHING SET ObjRS = NOTHING SET ObjRS_atualiza = NOTHING SET ObjCX = NOTHING SET status_envio = NOTHING%>

Me ajudem irmãos, pois só falta isso, pois tudo funciona só que COM ESTE ERRO....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só lembrando pessoal!Não quero que vocês me deem tudo na boca, só quero uma ajuda para saber onde está o ERRO, que está mandando a mesma mensagem duplicada no mesmo email.... acho que deve ser no FOR ou sei lá....Me ajudem por gentileza, sei que vocês sabem... resolver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal!

 

Junto a este código de newsletter que estou tentando arrumar com vocês, tenho também um script que vem na mensagem enviado pela news ao email do destinatario e recebido no outlook, ele amostra no rodapé um link para deletar o email caso oque recebeu a newsletter não queira mais receber e quer tirar seu email da lista.

 

NO link, vem assim:

E o código deste arquivo que deleta é esse:

<!--#include file="conexao.asp" --><%'Recuperando oque foi escrito no formulário RemoverEMAIL_ID	   = Replace(Request.QueryString("id"),"'","") RemoverEMAIL_MAIL   = Lcase(Request.QueryString("email")) 'Mudando as variaveis, para melhor segurança dos dados Desativar_ID	 = RemoverEMAIL_ID Desativar_EMAIL  = RemoverEMAIL_MAIL Desativar_UPDATE = 0 'Selecionamos os dados do banco de dados e verificamos se confirma os dados com o do formulario SET VERIFICANDO = ObjCX.Execute("SELECT * FROM SISTEMA_Newsletter WHERE ID="& Desativar_ID &" AND NewsletterEmail='"& Desativar_EMAIL &"'") %><%'Vericamos se existe o email no banco de dados, senão apresentamos abaixo  IF VERIFICANDO.EOF THEN	 response.write "<link href=""admanager/manager_includes/includes_config-css_2.css"" rel=""stylesheet"" type=""text/css"" />"	 response.write "<table width=""90%"" height=""90%"" border=""0"" align=""center"" cellpadding=""2"" cellspacing=""2"">"	 response.write "  <tr>"	 response.write "	<td><table width=""90%"" border=""0"" align=""center"" cellpadding=""2"" cellspacing=""2"">"	 response.write "	  <tr>"	 response.write "		<td><div align=""left""><a href=""http://www.nomedoservidor.com.br"" target=""_parent""><img src=""http://www.nomedoservidor.com.br/site_imagens/imagem_remove_email.gif"" width=""154"" height=""89"" border=""0"" /></a><br />"	 response.write "		  <br />"	 response.write "		  <br />"	 response.write "		  <br />"	 response.write "		  <span class=""TEXTO-DICAS1"">Seu endereço de email não pode ser deletado, pois ele não existe em nossa base de dados.</span></div></td>"	 response.write "	  </tr>"	 response.write "	</table></td>"	 response.write "  </tr>"	 response.write "</table>"	 Response.End  END IF%><%'Cadastrando dados na tabela de controle de acessos antes de entrar no sitema de administração   SET DELETAR = ObjCX.Execute("UPDATE SISTEMA_Newsletter SET NewsletterEmail = '"& Desativar_EMAIL &"' WHERE NewsletterOpcao = '& Desativar_UPDATE &'")'Redirecionamos após efetuação da verificação		 response.write "<link href=""http://www.nomedoservidor.com.br/admanager/manager_includes/includes_config-css_2.css"" rel=""stylesheet"" type=""text/css"" />"	 response.write "<table width=""90%"" height=""90%"" border=""0"" align=""center"" cellpadding=""2"" cellspacing=""2"">"	 response.write "  <tr>"	 response.write "	<td><table width=""90%"" border=""0"" align=""center"" cellpadding=""2"" cellspacing=""2"">"	 response.write "	  <tr>"	 response.write "		<td><div align=""left""><a href=""http://www.nomedoservidor.com.br"" target=""_parent""><img src=""http://www.nomedoservidor.com.br/site_imagens/imagem_remove_email.gif"" width=""154"" height=""89"" border=""0"" /></a><br />"	 response.write "		  <br />"	 response.write "		  <br />"	 response.write "		  <br />"	 response.write "		  <span class=""TEXTO-DICAS1"">Seu email foi deletado com sucesso de nossa base de dados.<br />"	 response.write "		  </span> Se desejar cadastrar-se novamente, solicitamos  que acesse nosso site e insira  seu endereço de email novamente. </div></td>"	 response.write "	  </tr>"	 response.write "	</table></td>"	 response.write "  </tr>"	 response.write "</table>"	 Response.End%>
E está me dando o seguinte ERRO:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

 

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

 

/remove_email.asp, line 38

 

A linha 38 fica aqui:

'Selecionamos os dados do banco de dados e verificamos se confirma os dados com o do formulario

SET VERIFICANDO = ObjCX.Execute("SELECT * FROM SISTEMA_Newsletter WHERE ID="& Desativar_ID &" AND NewsletterEmail='"& Desativar_EMAIL &"'")

Podem ajudar-me?????

Compartilhar este post


Link para o post
Compartilhar em outros sites

quais sao os tipos de dados dos campo que fazem parte desta SQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mario!Ño banco tenho os seguintes campos:ID - autonumeraçãoNewsletterNome - TextoNewsletterEmail - TextoNewsletterOpcao - Sim/NãoTambém não sei se não é por causa da newsletter quando envia, pois quando envio vai normal, mas quando recebo a mensagem no outlook, ele me duplica o email, que deveria ser um para cada email...E quero tua ajuda naquele código da newsletter também???

Compartilhar este post


Link para o post
Compartilhar em outros sites

antes desta linha do erro poe response.write("SELECT * FROM SISTEMA_Newsletter WHERE ID="& Desativar_ID &" AND NewsletterEmail='"& Desativar_EMAIL &"'")response.ende posta aqui o que aparece

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode confirmar issoID - autonumeraçãoNewsletterEmail - Textopois deveria dar certo ou pelo menos nao dar erro de tipos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim é isso sim!MAs, será que não é por causa do NewsletterOpção, que é sim/nao, logo mais em baixo do código, que eu utilizo, para não deletar do banco os email, e sim para selecionar depois só os que querem receber novidades, sem ter que deletalos do banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas o erro nao é naquele select?é lá que tem um campo com tipo de dados diferente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Mario!Agradeço a ajuda, e vou refazer os campos no BD, tudo novamente....Para tirar minhas dúvidas... e volto a retornar...MAS por enquanto não consegue me ajudar a arrumar este ENVIO DE NEWSLETTER EM MASSA????Já não estou mais nem dormindo direito, tentando arrumar, só que não tenho conhecimento suficiente para ver oque está de errado no código que está duplicando.Veja se consegue aí amigo...

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.