Ir para conteúdo

POWERED BY:

Arquivado

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

Weblur

Como definir qtos e-mails mandar pelo Newsletter?

Recommended Posts

Olá pessoal

 

Tenho um bd em access com 17.000 e-mails para envio de mala direta.

Tenho um sisteminha de news q funciona perfeitamente.

 

Eu tava fazendo assim: dividia o bd por 1.000, ou seja, fiquei com 17 bds, com 1.000 e-mails cada. Então bastava trocar no asp o nome do bd e tava resolvido.

 

Mas eu queria fazer de uma forma automática, usando apenas o bd q tem os 17.000 e q o asp fosse mandando aos poucos.

Como fazer isso??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo você pode estipular de 1.000 em 1.000 no asp e a cada 1.000 que ele enviar ele deleta do banco ou atualiza o registro com uma FLAG dizendo que foi enviado, assim da próxima vez que o asp por executado ele só envia para os que você determinar!...

 

Agora fazer ele enviar e parar é meio complicado porque o ASP é uma linguagem que trabalha por requisição se for um ASP.NET até dava pra fazer algo como um relógio e etc...

 

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser feito por paginação normal de RecordSet, havia até um exemplo aqui no fórum, utilizando paginação e MetaRefresh para que o sistema parasse de enviar durante um tempo e logo após retomasse do ponto onde parou, mas a página deve ficar aberta durante todo o periodo.

 

A quantidade de envios depende única e exclusivamente da performance/disponibilidade do servidor que irá fazer o envio. Alguns Hosts limitam a quantidade de envio por hora/dia, com isso você cria o script com base nisso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é pessoal, chequei com o Terra: cada e-mail deve possuir 99 destinatários, acima desse número é

considerado SPAM, o intervalo entre às mensagens pode ser de 20 segundos.

 

Alguma me ajuda?? Não faço a mínima idéia de como estipular isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No sub-fórum laboratório de scripts você vai achar alguns exemplos sobre paginação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No sub-fórum laboratório de scripts você vai achar alguns exemplos sobre paginação.

 

Olá pessoal

 

Consegui adaptar um script de paginação. Funcionava perfeito, porém, se durante o envio ele encontra no banco algum e-mail inválido, retornava erro.

Consegui resolver parcialmente colocando: On Error Resume Next.

 

Acontece q isso só funciona na pg1, ou seja, suponhamos q ele estava enviando os primeiros 99 e-mail e no meio desses, passou por 1 inválido. Qdo ele vai pra pg 2, ele não envia mais ao encontrar outro inválido, então penso q tenho q estipular esse comando On Error Resume Next para todas as pgs. Só q fiquei 2 dias em cima disso e ainda não consegui resolver.

 

Me ajudem??

Aqui vai o cód:

 

<%
remetente = request("remetente")
Assunto = request("assunto")
conteudo = request("conteudo")

Set ObjConn = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.RecordSet")
ObjConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="& server.MapPath("dados.mdb")




SQL = "SELECT email FROM emailfoco GROUP BY email"

RS.Open SQL, ObjConn, 3, 3


If Request.QueryString("pagina") = "" Then
pagina = 1
Else
pagina = Request.QueryString("pagina")
End if




const registros = 99


RS.PageSize = registros


RS.AbsolutePage = pagina


totpaginas = RS.PageCount


totregistros = RS.RecordCount


i = 1




While NOT RS.EOF AND NOT i > registros



'cria o objeto para o envio de e-mail
Set objCDOSYSMail = Server.CreateObject("CDO.Message")

'cria o objeto para configuração do SMTP
Set objCDOSYSCon = Server.CreateObject ("CDO.Configuration")

'SMTP
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail-fwd"

'porta do SMTP
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

'porta do CDO
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

'timeout
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30

objCDOSYSCon.Fields.update

'atualiza a configuração do CDOSYS para o envio do e-mail
Set objCDOSYSMail.Configuration = objCDOSYSCon

'e-mail do remetente
objCDOSYSMail.From = "email@cliente.com.br"

'e-mail do destinatário
objCDOSYSMail.To = RS("email")

'assunto da mensagem
objCDOSYSMail.Subject = assunto

'conteúdo da mensagem
'objCDOSYSMail.TextBody = conteudo
'para envio da mensagem no formato html altere o TextBody para HtmlBody
objCDOSYSMail.HtmlBody = conteudo

'objCDOSYSMail.fields.update
'envia o e-mail
 On Error Resume Next
objCDOSYSMail.Send



If x = true then
Session("good") = Session("good") + 1
Else
Session("bad") = Session("bad") + 1
motivo = Mailer.Response
End If

i = i + 1
RS.MoveNext
Wend



If NOT (pagina > totpaginas) Then

Response.AddHeader "Refresh", "2;URL=enviar.asp?pagina="&pagina+1
Response.Write("<strong><font face=verdana color=red>99 e-mails enviados.<BR>")
Response.Write("Aguarde, preparando script para enviar mais 99 e-mails...</font></strong>")

Else

Response.Write("<strong><font face=verdana color=red>Todos os e-mails enviados.</font></strong><BR><BR>") 
Response.Write("<font face=verdana color=blue><b>Estatísticas</b></font><BR>=============================<BR>")
Response.Write("<font face=verdana color=black>E-mails enviados com sucesso: <b>"&Session("good")&"</b><BR>")
Response.Write("E-mails enviados sem sucesso: <b>"&Session("bad")&"</b><BR>")
Response.Write("Erro: <b>"&motivo&"</b><BR>--<BR>")
Response.Write("Total de e-mails no banco de dados: <b>"&totregistros&"</b></font>")
Session("good") = 0
Session("bad") = 0
Set Mailer = Nothing
Set RS = Nothing
Set ObjConn = Nothing

End If
%>

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.