Back-End

12 set, 2007

Mala direta e-mail com seleção por checkbox

Publicidade

Vamos estudar como enviar e-mail através de uma lista de usuários, podendo selecionar para quem enviar através de checkbox:

1º . Instalar o componente CDONTS em sua máquina

  • Link para download
  • Após baixar o arquivo, execute-o (Clique em Iniciar, Executar) da seguinte forma: regsvr32 c:winntsystem32cdonts.dll

2º. Crie o nosso banco de dados de onde buscaremos o nome e e-mail de cada Usuário.

  • Primeiro o banco de dados com o nome de Banco.mdb
  • Em seguida a tabela com o nome de TB_USERS

  • Por fim os campos (id_user, nome, email)

Após criar os campos salve o banco em uma pasta em seu servidor LOCAL (iis).

3º. Agora vamos criar as páginas:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Envio E-mail</title>
<style type="text/css">
<!--
.titulo {
	font-family: Verdana;
	font-size: 10px;
	color: #FFFFFF;
}
.texto {font-family: Verdana; font-size: 10px; color: #000000; }
-->
</style>
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
 <tr></tr>
 <tr>
  <td> </td>
 </tr>
 <tr></tr>
 <tr>
  <td>
<%
'Aqui vamos abrir a conexão para resgatar valores do banco de dados
strCon = "DBQ=c:\inetpub\wwwroot\caminho_banco.mdb;Driver={Microsoft Access Driver (*.mdb)};"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.CursorLocation = 3
objRS.CursorType = 0
objRS.LockType = 1
strSQL = "SELECT * FROM TB_USERS"
objRS.Open strSQL, strCon
If not objRS.EOF then 
%>
   <table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tr></tr>
    <tr>
     <td> </td>
    </tr>
    <tr></tr>
    <tr>
     <td>
<%
'Aqui faremos o action apontando para a página de envio.
%>
      <form action="set.asp" method="post" name="form" id="form">
       <input name="Submit" type="submit" class="texto" value="Enviar">
       <br>
       <br />
       <table width="100%" border="0" cellpadding="2" cellspacing="1" bgcolor="#E8E8E8">
        <tr>
         <td width="20" height="20" align="center" bgcolor="#006699" ><span class="titulo">></span></td>
         <td width="50%" height="20" bgcolor="#006699"><span class="titulo">Nome</span></td>
         <td width="50%" height="20" bgcolor="#006699"><span class="titulo">E-mail</span></td>
        </tr>
<%
'Aqui faremos a alternação das linhas da tabela, lembrando que não devemos colocar <tr> fora da linha ASP. 
objRS.MoveFirst
While Not objRS.EOF
if cor ="#FFFFFF" then
cor = "#CCCCCC"
else
cor ="#FFFFFF"
end if
response.Write "<tr bgcolor="& cor &">"
%>
          <td width="20" align="center"><span class="texto">
            <%
'Passamos valor do e-mail para checkbox que separa valores escolhidos por ",".
%>
                  <input type="checkbox" name="box" value="<%= objRS("email")%>"/>
          </span></td>
          <%
'Listaremos nome no recordset.
%>
         <td width="50%" class="texto" ><%=objRS("nome")%></td>
<%
'Listaremos e-mail no recordset.
%>
         <td width="50%" class="texto"><%=objRS("email")%></td>
        </tr>
<%
objRS.MoveNext
Wend 
Else
%>
        Não existe nomes a serem listados
<%
End If
%>
       </table>
      </form></td>
    </tr>
   </table></td>
 </tr>
</table>
</body>
</html>
<%
objRS.close
%>

Resultado da página:

Agora a página set.asp (Nome indicado no form da página acima)

<%
'Resgata valor checkbox separados por vírgula.
strP=request.form("box")

ArrP=split( strP , "," ) 'No caso coloquei virgula, pois o separador é este, caso seja outro basta mudara para o desejado.

'Faz o loop para enviar até que dispare todos os selecionados.
for i = 0 to UBound(ArrP)
Set objmail = Server.CreateObject("CDONTS.NewMail") 

objMail.From = "seuemail@seuprovedor.com.br"
objMail.To = ArrP(i)
objMail.Cc = ""
objMail.Bcc = ""

objMail.Subject = "Título"
sHTML = sHTML & "<html xmlns=""http://www.w3.org/1999/xhtml"">"
sHTML = sHTML & "<head>"
sHTML = sHTML & "<title>Envio e-mail</title>"
sHTML = sHTML & "</head>"
sHTML = sHTML & "<body leftmargin=""0"" topmargin=""0"" rightmargin=""0"" bottommargin=""0"" bgcolor=""#FCEFC3"">"
sHTML = sHTML & "Olá você usou o sistema de disparo de e-mail em massa!"
sHTML = sHTML & "</body>"
sHTML = sHTML & "</html>"

objMail.MailFormat = 0 
objMail.BodyFormat = 0 
objMail.body = sHTML

objMail.Send
sHTML = ""

On Error Resume Next
set objMail = Nothing

if Err <> 0 Then
Response.Write "Foi encontrado um erro (" & Err.Description & ")."
Response.End
End if

'Fim loop.
next
ObjRS.close

'Gera alerta de envio ao fim do código.
response.Write("<font face='verdana' size='1'>E-mails enviado com sucesso!</font><br>")
response.Write("<font face='verdana' size='1'>Para: "&strP&".</font>")
%>

Resultado final:

Pronto!

Agora você já tem um sistema de disparo de e-mail. Nele você pode fazer adaptações para a real necessidade do seu sistema. Espero que seja útil a todos.