none
Newsletter CDOSYS RRS feed

  • 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
    %>


    terça-feira, 25 de março de 2008 17:54

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

    quarta-feira, 26 de março de 2008 12:47
  • Muito bom, cara, funcionou legal!

    Abraço, e Obrigado!
    quarta-feira, 26 de março de 2008 18:36