Ir para conteúdo

POWERED BY:

Arquivado

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

zanelati2002

[Resolvido] Enviar mensagem para aniversariante

Recommended Posts

Pessoal tenho um codigo aqui que mostra os aniversariantes do dia gostaria de cria um codigo que enviase um e-mail para eles com uma mensagem, coo devo proceder o codigo que tenho que mostra o aniver.. esta abaixo

 

<% 
Set Conexao = Server.CreateObject("ADODB.Connection")
Conexao.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("membros.mdb")
Set rs = Server.CreateObject("ADODB.Recordset") 
'SELECIONE Nome e a Data de Nascimento DA Tabela Usuarios ONDE o MES de Nascimento seja Igual ao MES 
'Atual e a DIA seja Igual ao DIA de Hoje, ORDENADOS por ANO de Nascimento
SQL = "SELECT username, dob FROM users WHERE MONTH(dob)="
SQL = SQL & "MONTH(NOW()) AND DAY(dob)=DAY(NOW()) ORDER BY YEAR(dob)"
rs.Open SQL, Conexao,3,3
  If rs.EOF Then ' Se não encontrou registros escreva
	  Response.Write("<p align=center><b>Não há Aniversáriantes Para o Dia de Hoje.</B>")
  Else 'Se encontrou registros escreva
 do while not rs.eof
   response.write("Nome: <b>"& rs("username") &  " </b><br>Idade: <b>"  & DateDiff("yyyy",rs("dob"),Now) & "</b> anos <br>")
rs.movenext
loop
response.write(" Total: <b>" & rs.recordcount & "</b> Membros")
  End If

rs.Close
Set rs = Nothing
Conexao.Close
Set Conexao = Nothing
%>

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cria uma SUB com as informações para enviar e-mail e apenas chame ela dentro do do while.

 

Ficaria algo assim:

do while not rs.eof
   nmdestinatario = rs("username")
   edestinatario = rs("email")
   nmremetente = "Seu site"
   eremetente = "email@doseusite.com.br"
   texto = "Feliz aniversário"

   call enviaEmail(nmdestinatario, edestinatario,nmremetente,eremetente,texto)
   
response.write("Nome: <b>"& rs("username") &  " </b><br>Idade: <b>"  & DateDiff("yyyy",rs("dob"),Now) & "</b> anos <br>")
rs.movenext
loop

Seria basicamente isso. A função de envio se você não souber criar, dê uma pesquisada aqui no Fórum, se não me engano eu mesmo postei uma de exemplo.

 

Outra coisa... não esqueça de armazenar em uma tabela ou criar algum campo informando que o e-mail foi enviado para tal pessoa, senão sempre que acessar a página, caso você não crie uma página separada de envio, vai enviar um e-mail ao aniversariante.

 

A idéia do que você quer fazer é praticamente igual a de um newsletter.

Compartilhar este post


Link para o post
Compartilhar em outros sites

então veja se é isto queria acessar uma pagina na qual mostrasse os aniversariantes no qual já tenho o codigo ai tipo enviar mensagem enviaria para todos os aniverariantes do dia este codigo acima faz isto então me fala do post teu que citou

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código que citei é a idéia do que você tem que fazer, mas você tem que completar ele, criando a função para enviar o e-mail, já que no código possui apenas a chamada para a função passando os parâmetros.

 

Se você quiser remover a chamada da função e colocar o código de envio direto ali, também pode.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipo deixa eu te falar uma coisa gostaria de fazer assim tipo no meu site www.onemasters.com tem um sistema de mensagem para membros, então gostaria de enviar uma mensagem para o membro por e-mail dizendo que tem uma nova mensagem to fazendo aqui já coloco o codigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hargom veja só estou com uma duvida muito simples talvez para você me ajudar criei uma base simples para enviar email mais não sei o que usar em alguns dados como

Mail.AddRecipient emailUser

E para selecionar o email dos membros aniverariantes, olha o erro que ta dando no codigo abaixo.

 

<% 
Set Conexao = Server.CreateObject("ADODB.Connection")
Conexao.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("DADOS.mdb")
Set rs = Server.CreateObject("ADODB.Recordset") 
'SELECIONE Nome e a Data de Nascimento DA Tabela Usuarios ONDE o MES de Nascimento seja Igual ao MES 
'Atual e a DIA seja Igual ao DIA de Hoje, ORDENADOS por ANO de Nascimento
SQL = "SELECT username, dob FROM users WHERE MONTH(dob)="
SQL = SQL & "MONTH(NOW()) AND DAY(dob)=DAY(NOW()) ORDER BY YEAR(dob)"
rs.Open SQL, Conexao,3,3
  If rs.EOF Then ' Se não encontrou registros escreva
	  Response.Write("<p align=center><b>Não há Aniversáriantes Para o Dia de Hoje.</B>")
  Else 'Se encontrou registros escreva
 do while not rs.eof
   response.write("Nome: <b>"& rs("username") &  " </b><br>Idade: <b>"  & DateDiff("yyyy",rs("dob"),Now) & "</b> anos <br>")
rs.movenext
loop
response.write(" Total: <b>" & rs.recordcount & "</b> Membros")
  End If
Set Mail = Server.CreateObject("JMail.SMTPMail")
	HTML = "<!DOCTYPE HTML PUBLIC""-//IETF//DTD HTML//EN"">"
	HTML = HTML & "<html>"
	HTML = HTML & "<head>" 
	HTML = HTML & "</head>"
	HTML = HTML & "<body bgcolor=""FFFFFF"">"
	HTML = HTML & "<font face=Verdana size=1>"
	HTML = HTML & "Olá <b>"& username &"</b>, Hoje é o dia de seu aniverario<br>"
	HTML = HTML & "Feliz aniversário<br>"	 
	HTML = HTML & "</body>"
	HTML = HTML & "</html>"
Mail.ServerAddress = "smtp.onemasters.com"
Mail.Logging = True
Mail.Sender = "cadastro@onemasters.com" 
Mail.SenderName = "Feliz aniversario"
Mail.AddRecipient emailUser
Mail.AddRecipientBCC "cadastro@onemasters.com"
Mail.Subject = "Feliz aniversario"
Mail.HTMLBody = HTML
Mail.Execute
Set Mail = Nothing

rs.Close
Set rs = Nothing
Conexao.Close
Set Conexao = Nothing
%>

 

oUTRA COISA A MENSAGEM CHEGA ASSIM

 

Olá , Hoje é o dia de seu aniverario

Feliz aniversário

 

nÃO VEM O NOME DO USERS

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deveria colocar rs("username") e não só username.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei deu este erro

 

Microsoft VBScript compilation error '800a0401'

 

Expected end of statement

 

/login/niver.asp, line 38

 

HTML = HTML & "Olá <b>rs("username")</b>, Hoje é o dia de seu aniverario<br>"

 

aproveitando e no Mail.AddRecipient emailUser deixo como esta

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele mostou mais deu erro com o acerto

 

Nome: pinta7

Idade: 28 anos

Nome: mateus

Idade: 24 anos

Nome: parenti

Idade: 23 anos

Total: 3 Membros error '80020009'

/login/niver.asp, line 38

 

 

agora ta asim

 

HTML = HTML & "Olá "& rs("username") & ", Hoje é o dia de seu aniverario<br>"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mail.AddRecipient rs("emailUser")

 

E tem que informar o campo e-mail no SELECT...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que ta errado do jeito que to fazendo o codigo Hargon veja só da dando este erro

ADODB.Recordset error '800a0cc1'

 

Item cannot be found in the collection corresponding to the requested name or ordinal.

 

/login/niver.asp, line 27

 

response.write("Nome: <b>"& rs("username") & " </b><br>Idade: <b>" & DateDiff("yyyy",rs("dob"),Now) & "</b> anos <br>")

 

 

 

 

 

<% 
Set Conexao = Server.CreateObject("ADODB.Connection")
Conexao.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("dados.mdb")
Set rs = Server.CreateObject("ADODB.Recordset") 
'SELECIONE Nome e a Data de Nascimento DA Tabela Usuarios ONDE o MES de Nascimento seja Igual ao MES 
'Atual e a DIA seja Igual ao DIA de Hoje, ORDENADOS por ANO de Nascimento
SQL = "SELECT username, dob FROM users WHERE MONTH(dob)="
SQL = "SELECT email, dob FROM users WHERE MONTH(dob)="
SQL = SQL & "MONTH(NOW()) AND DAY(dob)=DAY(NOW()) ORDER BY YEAR(dob)"
rs.Open SQL, Conexao,3,3
  If rs.EOF Then ' Se não encontrou registros escreva
	  Response.Write("<p align=center><b>Não há Aniversáriantes Para o Dia de Hoje.</B>")
  Else 'Se encontrou registros escreva
 do while not rs.eof
   response.write("Nome: <b>"& rs("username") &  " </b><br>Idade: <b>"  & DateDiff("yyyy",rs("dob"),Now) & "</b> anos <br>")
rs.movenext
loop
response.write(" Total: <b>" & rs.recordcount & "</b> Membros")
  End If
Set Mail = Server.CreateObject("JMail.SMTPMail")
	HTML = "<!DOCTYPE HTML PUBLIC""-//IETF//DTD HTML//EN"">"
	HTML = HTML & "<html>"
	HTML = HTML & "<head>" 
	HTML = HTML & "</head>"
	HTML = HTML & "<body bgcolor=""FFFFFF"">"
	HTML = HTML & "<font face=Verdana size=1>"
	HTML = HTML & "Olá <b>"& rs("username") &  " </b>, Hoje é o dia de seu aniverario<br>"
	HTML = HTML & "Feliz aniversário<br>"	 
	HTML = HTML & "</body>"
	HTML = HTML & "</html>"
Mail.ServerAddress = "smtp.onemasters.com"
Mail.Logging = True
Mail.Sender = "cadastro@onemasters.com" 
Mail.SenderName = "Feliz aniversario"
Mail.AddRecipient rs("emailUser") 
Mail.AddRecipientBCC "cadastro@onemasters.com"
Mail.Subject = "Feliz aniversario"
Mail.HTMLBody = HTML
Mail.Execute
Set Mail = Nothing

rs.Close
Set rs = Nothing
Conexao.Close
Set Conexao = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro ta aqui

 

SQL = "SELECT username, dob FROM users WHERE MONTH(dob)="
SQL = "SELECT email, dob FROM users WHERE MONTH(dob)="
SQL = SQL & "MONTH(NOW()) AND DAY(dob)=DAY(NOW()) ORDER BY YEAR(dob)"

A segunda linha sobrescreve o valor na variavel SQL, ou seja na realidade voce nao seleciona username, apenas email e dob

 

E quando usa ele diz que nao encontrou entre os selecionados

 

Apenas elimine a primeira linha e adicione username no select assim

 

 

SQL = "SELECT username, email, dob FROM users WHERE MONTH(dob)="
SQL = SQL & "MONTH(NOW()) AND DAY(dob)=DAY(NOW()) ORDER BY YEAR(dob)"

Deve resolver se nao tiver outro erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

mostrou os membros mais deu este erro

 

Nome: pauloj33

Idade: 51 anos

Nome: pilasvgo

Idade: 22 anos

Nome: monica

Idade: 21 anos

Nome: garotanota10

Idade: 21 anos

Nome: paulão

Idade: 21 anos

Nome: sexo_rok

Idade: 21 anos

Nome: artur

Idade: 21 anos

Nome: franklin

Idade: 21 anos

Total: 8 Membros error '80020009'

/login/niver.asp, line 38

 

 

a linha é esta

 

HTML = HTML & "Olá <b>"& rs("username") & " </b>, Hoje é o dia de seu aniverario<br>"

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso ta fora do loop

 

ou seja nao tem mais registro para exibir e mesmo assim está tentando usar seu valor

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas é pelo mesmo motivo

 

nao tem emeail selcionado

 

acabaram os registros

 

tem qeu por esta parte dentro do loop para funcionar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que fiz algo de errado

 

olha o erro

 

Total: 8 Membros error '80020009'

/login/niver.asp, line 40

 

 

 

<% 
Set Conexao = Server.CreateObject("ADODB.Connection")
Conexao.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("dados.mdb")
Set rs = Server.CreateObject("ADODB.Recordset") 
'SELECIONE Nome e a Data de Nascimento DA Tabela Usuarios ONDE o MES de Nascimento seja Igual ao MES 
'Atual e a DIA seja Igual ao DIA de Hoje, ORDENADOS por ANO de Nascimento
SQL = "SELECT username, email, dob FROM users WHERE MONTH(dob)="
SQL = SQL & "MONTH(NOW()) AND DAY(dob)=DAY(NOW()) ORDER BY YEAR(dob)"
rs.Open SQL, Conexao,3,3
  If rs.EOF Then ' Se não encontrou registros escreva
	  Response.Write("<p align=center><b>Não há Aniversáriantes Para o Dia de Hoje.</B>")
  Else 'Se encontrou registros escreva
do while not rs.eof
   response.write("Nome: <b>"& rs("username" )&" </b><br>Idade: <b>"  & DateDiff("yyyy",rs("dob"),Now) & "</b> anos <br>")
rs.movenext
Set Mail = Server.CreateObject("JMail.SMTPMail")
	HTML = "<!DOCTYPE HTML PUBLIC""-//IETF//DTD HTML//EN"">"
	HTML = HTML & "<html>"
	HTML = HTML & "<head>" 
	HTML = HTML & "</head>"
	HTML = HTML & "<body bgcolor=""FFFFFF"">"
	HTML = HTML & "<font face=Verdana size=1>"
	HTML = HTML & "Olá <b>"& rs("username") &"</b>, Hoje é o dia de seu aniverario<br>"
	HTML = HTML & "Feliz aniversário<br>"	 
	HTML = HTML & "</body>"
	HTML = HTML & "</html>"
Mail.ServerAddress = "mail.onemasters.com"
Mail.Logging = True
Mail.Sender = "cadastro@onemasters.com" 
Mail.SenderName = "Feliz aniversario"
Mail.AddRecipient emailUser
Mail.AddRecipientBCC "cadastro@onemasters.com"
Mail.Subject = "Feliz aniversario"
Mail.HTMLBody = HTML
Mail.Execute
Set Mail = Nothing 

loop
response.write(" Total: <b>" & rs.recordcount & "</b> Membros")

 End If

rs.Close
Set rs = Nothing
Conexao.Close
Set Conexao = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

o movenext tem de ser imediatamente antes do loop

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.