Ir para conteúdo

POWERED BY:

Arquivado

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

Espanhol

Como enviar emails em lote?

Recommended Posts

Bom pessoal tenho um sistema simples de envio de newsletter para emails cadastrados em um bd.

Quando envio algum email, o script faz um loop e envia para cada email cadastrado, a mensagem escrita. O problema é que como são muuuuuuuuuuuuuitos emails cadastrados, o loop demora muito e às vezes até ocorre um "travamento" no carregando. Esses dias pensei em algo em que pudesse ser aplicado, onde eu limitasse a quantidade de envio.

 

Por exemplo:

Limite de envio de emails: de 1 até 100

Ou seja, o script pegaria do id 1 até o id 100 da tabela de emails cadastrados no bd.

Em um outro momento se eu quiser enviar mais emails, seria só digitar em um campo de formulário: "de: 101 até 200".

E então será que a idéia pode funcionar?

 

Vou porstar o code atual do sistema de forma resumida, só mesmo a parte que faz o envio:

ASP
<% case "enviando" %>

                          <table width="532" height="21" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#EAEAEA">

                                <tr>

                                  <td width="5" height="21" class="texto">  </td>

                                  <td width="21" class="texto"><div align="center"><img src="../adm/arquivos/icon_voltar.gif" width="16" height="16"></div></td>

                                  <td width="359" class="texto"><strong><a href="admin.asp">Voltar

                                        para Admin</a></strong></td>

                                  <td width="21" class="texto"><img src="../adm/arquivos/icon_carta.gif" width="15" height="10"></td>

                                  <td width="126" class="texto2"><strong>Formatar Mensagem</strong></td>

                                </tr>

                          </table>

                          <%    user = 0

   assunto = Request.Form("assunto")

   mensagem = Request.form("mensagem")

   mensagem = mensagem & "<LINK href=arquivos/style.css type=text/css rel=stylesheet><hr align=center size=1><span class=boletim><div align=center>Para não receber mais o boletim informativo <a href=deletar_email.asp target=_blank>clique aqui.</a></spam></div>"

 

 AbreConexao

   Sql = "SELECT email FROM boletim_dados"

   If Len(mensagem) Then

   

   Set rs = Server.CreateObject("ADODB.Recordset")

        rs.Open Sql, ConStr, 3, 3

           Response.Write "<br><br><br>"

   

   While Not rs.EOF

   

   'Enviar E-mail

  Set mail = Server.CreateObject("Persits.MailSender")

  Mail.Host = "mail.meusite.com"  

   mail.From = "meuemail@meusite.com" 'aqui você coloca seu email entre aspas

   'mail.To = rs("email")

   Mail.AddAddress rs("email")

          Server.ScriptTimeout = 6000

   'rs("email")

   mail.Subject = assunto

   Mail.IsHTML = true

   'mail.BodyFormat = 0

  'mail.MailFormat = 0

   mail.Body = mensagem

   

          on error resume next

                mail.Send

        if err.number<>0 then

                response.write("erro: "&err.number&"-"&err.description)

                response.end

        end if

   Set mail = Nothing

'da um loop e exibi cada email que recebeu boletim       

'       Response.Write "<span class=texto><strong>Email enviado para: " & rs("email") &  "</strong></span><br>"

 

   user = user + 1

   rs.MoveNext

   Wend

'mostra a quantidade de emails enviados

Response.Write "<span class=texto2><strong>No total foram enviados " & user & " email(s).</strong></span>"  

 

   rs.Close

   Set rs = Nothing

   Sql = "INSERT INTO boletim_enviados (assunto,mensagem,data) "

   Sql = Sql & "VALUES('" & Request.Form("assunto") & "','" & mensagem & "','" & Request.Form("data") & "')"

   Conexao.Execute(Sql)

   Else

   Response.Redirect "admin.asp?acao=erro"

   End If

   FechaConexao %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim...... e ai como eu faço pra criar o exemplo que dei la em cima?Eu especificar por meio de um campo de form a quantidade.Ex: de 1 até 100de 101 até 200

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só pessoal, estive lendo algo sobre constantes matemáticas e aí resolvi fazer isso aqui no papel pra ver.

 

Sql = "SELECT id FROM boletim_dados WHERE id > ' "& de &" '	AND  id < ' "& ate &" ' "

E aí pessoal é mais ou menos isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dê uma olhada também por Paginação, pois é uma boa forma também de fazer esse envio em lotes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só pessoal, tentei essa aí abaixo só que retornou erro.

 

Sql = "SELECT id, email FROM boletim_d WHERE id BETWEEN id <= '" & de & "' AND id => '" & ate & "' "

erro:

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

 

ODBC driver does not support the requested properties.

 

/boletim/admin.asp, line 144

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.