Inquiridor
Newsletter CDOSYS

Pergunta
-
Eu tenho um newsletter usando CDOSYS, e gostaria de adaptá-lo para que recebesse de 99 em 99 emails a cada 20 segundos. Já observei códigos aqui mesmo no fórum, porém algumas coisas não se adaptavam ao que queria, por exemplo uso de sessions e afins...O Código sem a adaptação seria esse:
Code Snippet<%
' Declaring variables
Dim rs, mail, subject, message, data_source, sql_select, no
no = 0
subject = Request.Form("subject")
message = Request.Form("message")
' Adding a link to all messages by which users can delete their
' emails if they would want later
message = message & "<br>"
message = message & "<img src=""http://www.tsinet.com.br/newsletter/imagem_pascoa2008.jpg"">"
message = message & "<br>"
message = message & "<br>"
message = message & "Em respeito à sua privacidade, "
message = message & "<br>"
message = message & "<a href='http://www.tsinet.com.br/newsletter/deletar.asp?email='>Clique aqui para cancelar o envio da newsletter ao email: "
sql_select = "select email from users"
data_source = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
Server.MapPath("mail.mdb")
' Check to see if you have not pressed the 'send' button mistakenly
If Len(message) Then
' If you have written some message then lets send it
' You can use ASP Email component of your choice, here I will
' stick with CDO
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql_select, data_source
While Not rs.EOF
Set objCDOSYSMail = Server.CreateObject("CDO.Message")
Set objCDOSYSCon = Server.CreateObject("CDO.Configuration")
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail-fwd"
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 180
objCDOSYSCon.Fields.update
set objCDOSYSMail.Configuration = objCDOSYSCon
objCDOSYSMail.From = "vendas@tsinet.com.br"
objCDOSYSMail.To = rs("email")
objCDOSYSMail.Subject = subject
objCDOSYSMail.HtmlBody = message & rs("email")
objCDOSYSMail.Send
Set objCDOSYSMail = Nothing
Set objCDOSYSCon = Nothing
no = no + 1
rs.MoveNext
Wend
' When messages have been sent to all the users, exit
Response.Write "Email enviado a " & no & " usuários."
rs.Close
Set rs = Nothing
' Had you pressed the button mistakenly with text area empty, then
' redirect back to the HTML Form
Else
Response.Redirect "admin.htm"
End If
%>
Todas as Respostas
-
Eu criei o código abaixo para envio de new aqui na empresa tente adapta-lo para o que deseja, esta em CDont´s é só você passar para Cdosys. E alterar conforme você queira.
<%
'******************************************************************************************************************
' ** Server.ScriptTimeout = Tempo de máximo de duração do script
' ** Session.Timeout = Tempo de duração da sessão.
'******************************************************************************************************************
Response.Buffer = false
Server.ScriptTimeout = 3000
Session.Timeout = 50'******************************************************************************************************************
' ** Declaração de variáveis
'******************************************************************************************************************
Dim oEmail, oRsEmail, var_contador, tempo, var_contador_geral
tempo = 0
var_contador = 1
var_contador_gera = 0'******************************************************************************************************************
' ** Criando Recordset de e-mails. As 2 primeiras linhas abaixo você troca pelo código que gera seu
' ** Recordset'******************************************************************************************************************
Set oEmail = Server.CreateObject("oIntranet.oNoticias")
Set oRsEmail = oEmail.EnviaEmail( )if not oRsEmail.EOF then
do while not oRsEmail.EOF'******************************************************************************************************************
' ** Defino quanto e-mails serão enviados por vez (neste caso 89)
'******************************************************************************************************************
if var_contador <= 89 then
set cdonts = Server.CreateObject("cdonts.newmail")
cdonts.From="informativo@seudominio.com.br"
cdonts.To=oRsEmail("EMAIL")
cdonts.Subject="Titulo do e-mail"
cdonts.Body=Request.Form("conteudo")
'cdonts.Body= "Data: " & now()
cdonts.MailFormat=0
cdonts.BodyFormat=0
cdonts.Send
set cdonts=Nothing
var_contador = var_contador + 1
else
set cdonts = Server.CreateObject("cdonts.newmail")
cdonts.From="informativo@seudominio.com.br"
cdonts.To=oRsEmail("EMAIL")
cdonts.Subject="Titulo e-mail"
cdonts.Body=Request.Form("conteudo")
'cdonts.Body= "Data: " & Now()
cdonts.MailFormat=0
cdonts.BodyFormat=0
cdonts.Send
set cdonts=Nothing
var_contador_geral = var_contador_geral + contador + 1
Response.Write("<br />Enviados até o momento: " & var_contador_geral & "<br />")
Response.Write("Gerando um tempo...<br />")'******************************************************************************************************************
' ** O tempo foi gerado por testes, é um contador simples que faz um tempo no script esse número
' ** abaixo da um tempo em média no meu servidor de 1m20s
'******************************************************************************************************************
while tempo < 120000000
tempo = tempo + 1
wend
tempo = 0
var_contador = 1
end if
Response.Write("Enviado email para: <b>" & oRsEmail("EMAIL") & "</b> Data: " & now() & "<br />")
oRsEmail.MoveNext
loop
end if
oRsEmail.Close
Set oRsEmail = Nothing
Set oEmail = Nothing%>
Abraços
Estevam
-