Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 40
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    1,413

    velocizzare invio mail di "massa"

    Ciao a tutti..

    sto realizzando un sistema di invio newsletter.

    Ma mi sto imbattendo in alcuni problemi.

    Il primo è che dovrei in media inviare mail a 300-500 persone (a volte con allegati di 500Kb). Lo script di invio (uso come component CDOSYS) riesce a inviare le mail ma la pagina ASP rimane bianca (invece di fare un redirect su una pagina di conferma) e il browser mi dice in basso "Operazione completata".
    Perchè?La pagina è andata in timeout?

    La seconda cosa è se esistono tecniche per velocizzare l'invio di mail di massa.

    Io utilizzo il CDOSYS all'interno di un ciclo FOR.

    Ma non basta. Mi sembra ancora lento (ma la cosa più grave è come indicato sopra, cioè che la pagina che processa i dati non va più avanti )

    I grandi portali come fanno a gestire invio mail a migliaia di utenti?

    grazie.

  2. #2
    non sò se i grandi portali utilizzano il sito per spedire tale quantitità di mail..
    cmq se la pagina va in timeout dovrebbe dirtelo che lo script è andato in time out... senò cmq sono "normali" tempi di accodamento dei messaggi... è come se tu lo facessi con il tuo client di posta...
    poi bisogna vedere come fai.. se mandi e-mail singole quindi ne spedisci 300-500 e se fai una mail solo a tutti inserendoli in ccn o cose simili...

    cmq credo dipenda tutto dai tempi di accodamento del Srv, e sopratutto spero che il srv ti permetta di gestire una simile coda...
    Ah, Jedis! I had no ideas! What can i do for you, honored Jedis?

    I'm not Jedi. I'm a guy with a lighsaber and a few questions.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    1,413
    mmm...e se devo inviare circa 500 mail allora non ci sono molte soluzioni? è un pò brutto vedere la pagina bianca con scritto "Operazione completata". Disorienta chi invia la newsletter.

  4. #4
    Originariamente inviato da alexinside83
    mmm...e se devo inviare circa 500 mail allora non ci sono molte soluzioni? è un pò brutto vedere la pagina bianca con scritto "Operazione completata". Disorienta chi invia la newsletter.
    se la pagina non si sposta col redirect, secondo me, è perchè hai messo male il redirect...

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    1,413
    eh purtroppo non è un problema di redirect...perchè se invio una decina di mail il redirect funziona tranquillamente.

    E' come se con grandi quantità di mail, IIS non dialoga più con il client e il browser visualizza il messaggio di pagina elaborata correttamete.

  6. #6
    beh, se hai il "debug" attivato, ovvero hai tolto gli errori http brevi, prima o poi ti si deve sbloccare... o quanto meno andare in timeout...
    purtroppo è normale che ti dica operazione completata...
    Ah, Jedis! I had no ideas! What can i do for you, honored Jedis?

    I'm not Jedi. I'm a guy with a lighsaber and a few questions.

  7. #7
    prova ad usare la paginazione ed una pagina intermedia dove salvare in sessioni i dati della NL.
    esempio
    codice:
    la pagina intermedia è semplice:
    session("oggetto")=request.form("oggetto")
    session("corpo")=request.form("corpo")
    response.redirect("invia_NL.asp?p=0")
    
    
    
    questa invece è invia_NL.asp 
    
    oggetto=session("oggetto")
    corpo=session("corpo")
    Set Rs = Server.CreateObject("ADODB.Recordset")
    sql = "SELECT email FROM iscritti"
    Rs.Open sql, objConn, 1, 3
    perpage = 10 '(manda 10 email per volta)
    
    If Request.QueryString("p") = "" then
    	p = 1
    else
    	p=cint("0"&Request.QueryString("p"))
    End if
    
    Rs.PageSize = perpage
    Rs.AbsolutePage = p
    totpag = rs.PageCount
    
    For i = 1 to perpage
    	If Not Rs.EOF then
    		'invia l'email ad rs("email")
    		'usando le variabili OGGETTO e CORPO
    		'....
    		Rs.MoveNext
    	end if
    next
    if p<totpag then
           response.redirect("invia_NL.asp?p="&p+1)
    else
           response.write("finito")
    end if
    bhè, insomma. così dovresti evitare il timeout.
    un pò schematica, ma il succo è questo

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    1,413
    mi pare di aver capito girando in rete che bisognerebbe avere un applicazione (o servizio) che giri in modalita asincrona e che sia indipendente da IIS...

    si parlava di WSH (windows script host) che permette di creare servizi per il sistema operativo:

    link

    e fattibile?

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    1,413
    help....

  10. #10
    Utente di HTML.it L'avatar di jet
    Registrato dal
    Dec 2002
    residenza
    Chieti
    Messaggi
    866
    • Ti conviene inviare newsletter a pacchetti non so, di 50 alla volta.
      crei an campo "inviata" e lo imposti a 0; poi prima di inviare le newsletter fai la classica SELECT Top 50 ID, email FROM Newsletter WHERE inviata = 0

      dopo l'invio:

      UPDATE Newsletter SET inviata=1 WHERE ID ="& ID

      quindi torni al modulo per l'invio;
      conti il totale degli ID = 0 e quelli = 1
      quando i totali sono uguali
      fai una response.write "hai inviato tutti i pacchetti!"
      altrimenti torni al modulo.



Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.