Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. ritardare invio email asp
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • F
      forteebello User • ultima modifica di

      ritardare invio email asp

      Ciao a tutti...
      ho questo problema...invio periodicamente una newsletter ai nostri inscritti tramite uno script da me modificato. Praticamente prende gli indirizzi da database e le invia ad una ad una.
      Lo script funziona perfettamente, nessun errore e la maggior parte delle email arrivano a destinazione.
      Quello che avrei bisogno e di fare in modo che dopo ogni email inviata lo script si metta in pausa per 5-10 secondi e riprenda in modo da evitare che alcuni domini classifichino la mail come spam.
      Ho visto che in php c'e' una funzione "sleep" ma non riesco a trovare qualcosa del genere in Asp.

      Grazie mille

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • paocavo
        paocavo Moderatore • ultima modifica di

        Basta cercare su GG "sleep asp"

        😉

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • F
          forteebello User • ultima modifica di

          ho provato ma non ho trovato nulla

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • M
            madai User Attivo • ultima modifica di

            Usi SQL server?

            Nel caso: http://classicasp.aspfaq.com/general/how-do-i-make-my-asp-page-pause-or-sleep.html

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • paocavo
              paocavo Moderatore • ultima modifica di

              In effetti quello che tenti di fare non credo sia possibile. Infatti, poichè la tecnologia ASP non supporta nativamente il multithreading, non puoi creare uno script che, in maniera asincrona, invia mail e aspetta un tempo fissato. Dovresti inoltre settare un server.timeout che dipende dal numero di mail da inviare e che probabilmente eccede i limiti massimi prestabiliti.

              Per piccoli ritardi (dell'ordine di pochi secondi) potresti utilizzare questa funzione:

              
              <%
                   function bSleep()
                        Set WScript = Server.CreateObject("WScript.Shell")
                        WScript.Sleep 2000
                    end function
              %>
              
              

              Sempre che il tuo hoster non abbia bloccato, come sicuramente avrà fatto, l'utilizzo dell'oggetto WScript.Shell (cioè il controllo completo del server da linea di comando...)

              Perciò mi sa che dovrai abbandonare l'idea.
              PS: Perchè ti dovrebbero considerare come spammer? ha molti utenti che hanno lo stesso server di posta (SMTP)? Potresti distribuire la sequenza di mail inviate in modo tale che i server di posta siano "abbastanza" sparsi ed evitare blocchi di mail cha hanno tutte la stessa stringa dopo la chiocciola...;)

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • F
                forteebello User • ultima modifica di

                @madai said:

                Usi SQL server?

                Nel caso: http://classicasp.aspfaq.com/general/how-do-i-make-my-asp-page-pause-or-sleep.html

                sono su windows server 2003 IIS 6

                Grazie per le risposte, vi allego copia dello script e se potete indicatemi come modificarlo inserendo la pausa tra do while e loop

                <%
                mittente=request("mittente")
                corpo1=request("Email")
                oggetto=request("Oggetto")
                provincia1=request("provincia")
                dim numero
                numero= 1
                DIM invioA, invioDa
                %>
                <%
                Set Conn = Server.CreateObject("ADODB.Connection")
                Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&server.mappath("/miodatabase.mdb")

                sql = "SELECT email FROM email where provincia like '%" & provincia1 & "%' "
                Set RS = Conn.Execute(SQL)
                Set rs = Server.CreateObject("ADODB.Recordset")
                rs.Open sql, conn, 3, 3
                do while not rs.eof

                invioA = rs("email")

                '* voce da modificare con un indirizzo email che funga da mittente: 
                '* in caso di errore riceverete notifica a questo indirizzo un MAILER-DAEMON
                '* dato che cdosys supporta questa notifica
                

                invioDa = "mia@email"

                '* creo gli oggetti cdosys sul server e li gestisco
                

                Dim iMsg
                Dim iConf
                Dim Flds
                set iMsg = CreateObject("CDO.Message")
                set iConf = CreateObject("CDO.Configuration")
                Set Flds = iConf.Fields
                Flds("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
                Flds("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost"
                Flds("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 8025
                Flds("http://schemas.microsoft.com/cdo/configuration/urlgetlatestversion") = True
                Flds.Update

                With iMsg

                Set .Configuration = iConf

                .CreateMHTMLBody corpo1

                .To = invioA

                .From = mittente

                .Subject = oggetto
                .Send
                End With
                numero=numero+1
                rs.movenext
                loop
                RS.Close
                Set RS=Nothing
                conn.Close
                Set conn=Nothing

                %>

                Grazie aspetto vostre notizie

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • M
                  madai User Attivo • ultima modifica di

                  Io credo che l'unica soluzione da te applicabile sia quella di creare una funzione che fa un loop fino a quando la differenza tra il time() iniziale e quello dell'inizio di un nuovo ciclo non sia pari ai 5 secondi che richiedi. Questa applicazione però utilizzerà molte risorse del server, è quindi sconsigliabile.

                  Perchè non applichi il consiglio di paocavo?

                  Potresti distribuire la sequenza di mail inviate in modo tale che i server di posta siano "abbastanza" sparsi ed evitare blocchi di mail cha hanno tutte la stessa stringa dopo la chiocciola.

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • F
                    forteebello User • ultima modifica di

                    questo l'ho già fatto, nel senso che ho diviso in blocchi di 200 ma il problema rimane..
                    se invece decidessi di convertire lo script in php? purtoppo a differenza di asp lo conosco pochissimo, sapreste aiutarmi in questo?

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    Caricamento altri post
                    Rispondi
                    • Topic risposta
                    Effettua l'accesso per rispondere
                    • Da Vecchi a Nuovi
                    • Da Nuovi a Vecchi
                    • Più Voti