Newsletter - Script Pronto

Este fórum é para dúvidas onde a base da questão é a linguagem ASP.

Moderador: web

responder a dúvida

Newsletter - Script Pronto

Mensagem por Rodrigo1 Offline » Qui Nov 06, 2008 4:03 pm


Ae Galera...
Codigo enviar news...funciona lindo aki....mais tem q adaptar poius todo novo news voce tem q fazer o session("body") na mao!
Se alguem quiser melhorar por favor o faca!

Código: Selecionar todos
<%'-----------------------------------------------------------------------------------------------------------------------------
If Session("body") = "" Then
vInclude = Request.Form("body")
'---------------------------------Aqui eu tiro as includes que dao erro--------------------------------------------------
   If NOT vInclude = "conecta.asp" OR vInclude = "val_login.asp"  Then
'-------------------Aqui eu executo uma pagina em que atribui a session body todo o html-----------------------
'-------------------Vou deixar um exemplo na segunda caixa de codigo do post-------------------------------------
      Server.Execute("../body/"&vInclude&"")
   Else
      Session("noInclude") = "Favor escolher um news!"
      Response.Redirect("index.asp")
   End If
End If
Session("noInclude") = ""
'----------------------------------------------------------
'Response.Buffer = False
Server.ScriptTimeout = 999999
'-------------------------DIM e Requests----------------
DIM vGrupo, RsBody, vAssunto, RsListar, RsGrupos, objMail
If Session("Grupo") = "" Then
Session("Grupo") = Request.Form("grupo")
Session("Assunto") = Request.Form("assunto")
End If
'-------------------Abre a conexao com o banco de dados-----------------------
Session.LCID = 1046
'On Error Resume Next
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open("DRIVER={MySQL ODBC 3.51 Driver}; SERVER=mysql01.SEUENDERECO.com.br; DATABASE=SEUDATABASE; User=SEUUSUARIO; PASSWORD=SUASENHA; OPTION=3" )

'--------------------Faz a listagem dos usuarios para pegar o nome--------------------
Set RsListar = Server.CreateObject("ADODB.Recordset")
vSql = "SELECT * FROM `listaemail` WHERE id_cat ="&Session("Grupo")&" AND truefalse=0 LIMIT 10"
RsListar.Open vSql, oConn
'------------------------------------While--------------
While Not RsListar.EOF
'---------------------Pega o nome e o email do usuario----------------------------
Set RsNome = Server.CreateObject("ADODB.Recordset")
vSql = "Select * From listaemail where id_mail="&RsListar("id_mail")&""
RsNome.Open vSql, oConn
'----------------------------SELECIONA O NOME DO GRUPOO NA TABELA------------------------
Set RsNomeGrupo = Server.CreateObject("ADODB.Recordset")
vSqlNomeGrupo = "SELECT * FROM `categoria` WHERE id_cat ="&Session("Grupo")
RsNomeGrupo.Open vSqlNomeGrupo, oConn
'---------------------------------CDONTS--------------
    
While Not RsNome.EOF
Response.Write(RsNome("email")&"<br />")
Set eObjMail = Server.CreateObject("CDONTS.NewMail")
       eObjMail.to = RsNome("email")
      eObjMail.from = "email@SEUSERVIDORDEVERDADE.com.br" 'E IMPORTATANTE COLOCAR O SERVIDOR DE VERDADE PARA NAO CHEGAR NO LIXO ELETRONICO
      eObjMail.subject = Session("Assunto")
      eObjMail.Importance = 1
      eObjMail.BodyFormat = 0
      eObjMail.MailFormat = 0
      eObjMail.body = Session("Body")      
      eObjMail.send
Set eObjMail = nothing



vSqlUpdate = "UPDATE `listaemail` SET `truefalse` = 1 WHERE id_mail="&RsListar("id_mail")&""
oConn.Execute(vSqlUpdate)
RsNome.MoveNext
Wend

RsListar.MoveNext
Wend
'----------------Cria o rs que verifica se acabou os emails----------------------
Set RsTry = Server.CreateObject("ADODB.RecordSet")
vSqlTry = "SELECT * FROM `listaemail` WHERE id_cat ="&Session("Grupo")&" AND truefalse=0"
RsTry.Open vSqlTry, oConn
'-----------------------Faz o teste e avisa o sucesso-----------------------------
If RsTry.EOF Then
   Response.Write("Ok")
   Session("NewsPop") = 1
   Response.Redirect("index.asp?msg=OK!")
Else
   Response.AddHeader "Refresh", 4
End If
'Response.End()
'-----------------Exibe a mensagem de que os emails foram enviados com sucesso-------------
'Set Mailer = Nothing

'Response.Redirect("index.asp?&assunto="&vAssunto&"&msg=Os eMails foram enviados com sucesso.")
%>
<html>
   <head>
      <title>Favor aguardar...Enviando eMails</title>
   </head>
   <body>
      <div align="center">
         <h2 style="color:#990000; font-family:Verdana, Arial, Helvetica, sans-serif;">
            Enviando eMails...Aguarde         </h2>
<h4 style="color:#006600; font-family:Verdana, Arial, Helvetica, sans-serif;">
            Enviando para o grupo - <%=RsNomeGrupo.fields("desc_cat")%>
         </h4>
         <p><a style="color:#990000; font-weight:normal; font-size:10px font-family:Verdana, Arial, Helvetica, sans-serif;" href="index.asp">Voltar (N&atilde;o presione o voltar do browser)</a></p>
         <img src="http://www.manaca.com.br/images/bg_cartas.jpg" /></div>
   </body>
</html>

Exemplo do body
Código: Selecionar todos

<%
'Voce pode colocar o html completinho ai que funciona lindo!
'Eu envio paginas inteiras normalmente...
Session("body") = "<html><head><title>Teste news</title></head><body>Aeee! Hello World</body></html>"
If Request.QueryString("mail") = "ok" Then
   Response.Write(Session("body"))
End If
%>



No bd eu tenho 2 tabelas...
uma com o id e nome de cada grupo e uma tabela de emails ligada as categorias de cada grupo via id_cat...
para voce poder dividir o envio em blocos de grupos...segmentado.
Fazendo propaganda por segmento voce atinge melhor seu target, tornando sua publicidade bem mais eficiente...

O truefalse do BD serve para marcar se enviado ou nao...uso como booleano

O script envia de 10 em 10 e atualiza a pagina em 4 segundos pra nao sobrecarregar o servidor e dar pau nos emails...do jeito que a locaweb gosta...hehe

o RsTry serve para ver se todos os emails do grupo estao com truefalse=1

Acho que expliquei o necessario...
qq coisa tamo ai!

vou deixar meu email q q coisa

rodrigoviolato@hotmail.com



detalhes...

Contribua você tambem com o forum!
Nao abandone seu post, responda se der certo!
Paz!

Avatar do usuário
Rodrigo1
SUPER ATIVO
SUPER ATIVO
Mensagens: 93
Registrado em: Qui Nov 06, 2008 2:49 pm
Localização: Sao Paulo

responder a dúvida

Voltar para Asp

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante