Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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 %>Carregando comentários...