Ir para conteúdo
Fórum Script Brasil
  • 0

Newsletter Sem Timeout


gustavovalle

Pergunta

Bom dia, desenvolvi uma newsletter que evita o bloqueio do servidor que esta hospedado e evite o famoso timeout, mas o problema é que ela esta fazendo o reload so uma vez, ou seja ela envia para os 10 primeiros emails, depois para mais 10 emails e finaliza, sendo que no cadastro possui 350 emails.

Coloquei um loop para 10 emails. Se alguém souber onde estou errando por favor me avise.

Obrigado

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

Set rs = Registro_Seleciona("tbl_newsletter", "id_news", lc_id)
lc_tipo = rs("tipo")
lc_imagem = rs("imagem")
'lc_texto = rs("texto")
rs.Close

SQL = "SELECT * FROM tbl_email"
SQL = SQL & " WHERE grupo = "& lc_tipo &""
SQL = SQL & " ORDER BY id"

Set rs = conDB.Execute(SQL)

const registros = 10
rs.PageSize = 10
rs.CacheSize = 10
rs.AbsolutePage = pagina
totpaginas = rs.PageCount
totregistros = rs.RecordCount
i = 1

While NOT rs.EOF AND Not i > registros

lc_email = rs("email")
'lc_nome = rs("nome")
'******************************************************************
'MONTA A NEWSLETTER
'******************************************************************
HTML = HTML & "<html>" 
HTML = HTML & "<head>"
HTML = HTML & "<title>"
HTML = HTML & lc_empresa
HTML = HTML & "</title>"
HTML = HTML & "</head>"
HTML = HTML & "<body  bgcolor=#FFFFFF>"
HTML = HTML & "<table width=100% border=0 cellspacing=0 cellpadding=0>"
HTML = HTML & "<tr>"
HTML = HTML & "<td align=center valign=middle>"
If lc_imagem <> "" Then
HTML = HTML & "<img src="
HTML = HTML & lc_url
HTML = HTML & "/newsletter/pictures/"
HTML = HTML & lc_imagem
HTML = HTML & " border=0>"
End If
HTML = HTML & "</td>"
HTML = HTML & "</tr>"
HTML = HTML & "</table>"
HTML = HTML & "</body>"
HTML = HTML & "</html>"
'******************************************************************
'ENVIA PARA O E-MAIL
'******************************************************************
'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") = "localhost" 

'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 = lc_email_empresa

'e-mail do destinatário 
objCDOSYSMail.To = lc_email

'assunto da mensagem 
objCDOSYSMail.Subject = "Newsletter (" & lc_empresa & ")"

objCDOSYSMail.HtmlBody = HTML
'para envio da mensagem no formato html altere o TextBody para HtmlBody 
'objCDOSYSMail.HtmlBody = "Teste do componente CDOSYS" 

'objCDOSYSMail.fields.update 
'envia o e-mail 
x = objCDOSYSMail.Send 


If Not x = true Then
Session("good") = Session("good") + 1
Else
Session("bad") = Session("bad") + 1
motivo = ""
End If

i = i + 1

'destrói os objetos 
Set objCDOSYSMail = Nothing
HTML = ""

rs.MoveNext
Wend

If Not (pagina > totpaginas) Then

Response.AddHeader "Refresh", "14;URL=newsletter.asp?acao=funcao&action=ENVIAR&txt_id="& lc_id &"&pagina="& pagina  + 1
Response.Write("<strong><font face=verdana color=red>10 e-mails enviados.<BR>")
Response.Write("Aguarde, preparando script para enviar mais 10 e-mails...</font></strong>")

Else

'Altera o status da Newsletter para enviado
SQL1 = "UPDATE tbl_newsletter SET data = '"& lc_data &"' , hora = '" & lc_hora & "' , status = '"& lc_status &"' WHERE id_news = " & lc_id & ""
set rsquery = conDB.Execute(SQL1)
set rsquery = nothing

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 rs = Nothing
Set objCDOSYSCon = Nothing

End If

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

acho que seu erro foi exatamente ter posto o loop pra dez emails

da uma olhada no seu while:

While NOT rs.EOF AND Not i > registros
a constante registros vale 10. quando o i chegar a 10 (ou seja forem enviados 10 emails), ele sai do while e não envia mais talvez o que você queira fazer seja:
While NOT rs.EOF AND Not i > totregistros

Link para o comentário
Compartilhar em outros sites

  • 0

Olha mas o principal problema que esta acontecendo e que ele envia 10 emails, e depois da um reload envia mais 10 e para de enviar, ele deveria ficar dando reload ate finalizar todos os emails.

O problema esta na verdade aqui, quando a pagina chega a 2, ele executa o else.

If Not (pagina > totpaginas) Then

Response.AddHeader "Refresh", "14;URL=newsletter.asp?acao=funcao&action=ENVIAR&txt_id="& lc_id &"&pagina="& pagina  + 1
Response.Write("<strong><font face=verdana color=red>10 e-mails enviados.<BR>")
Response.Write("Aguarde, preparando script para enviar mais 10 e-mails...</font></strong>")

Else

'Altera o status da Newsletter para enviado
SQL1 = "UPDATE tbl_newsletter SET data = '"& lc_data &"' , hora = '" & lc_hora & "' , status = '"& lc_status &"' WHERE id_news = " & lc_id & ""
set rsquery = conDB.Execute(SQL1)
set rsquery = nothing

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...