Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    50

    Problema esito invio mail

    Salve a tutti, ho creato un piccolo script in php per mandare in automatico delle semplici comunicazioni a tutti gli utenti (circa 350) del mio sito via mail ( mass mail ):

    Codice PHP:
    ....
    ....

    $getemail mysql_query("SELECT email FROM newsletter") or die(mysql_error());     
    $cont=0;          
    while(
    $data=mysql_fetch_array($getemail)) {     
       
    $email=$data["email"];      
       
    $header "From: $return_email\nReply-To: $return_email\nContent-Type: text/html;   charset=iso-8859-1";     
       if (
    $cont==10) {         
          
    sleep(6);         
          
    $cont=0;     
       }     
       
    $cont++;              
       
    mail("$email""$title""$body""$header");     
    }     
    if(
    mail) {         
      
    header("Location: messaggio.php?messaggio=Successo!");
    }
    else {         
      
    header("Location: messaggio.php?messaggio=Non inviata!");

    Il problema è che non mi viene visualizzato il messaggio finale, esito positivo/esito negativo (alla fine del while) dopo che tutte le email sono state mandate, la pagina mi si blocca in loop oppure scade e dà errore. Forse sarà una banalità ma non ci riesco.
    Grazie mille in anticipo.

  2. #2
    Quello che hai scritto non ha senso.
    dovresti modificare così

    if (mail("$email", "$title", "$body", "$header"))
    {
    header("Location: messaggio.php?messaggio=Successo!");
    }
    else
    {
    ....

    E ricorda anche che se mail() restituisce TRUE, significa che l'invio del mail è stoto processato. Ma non da nessuna garanzia sull'effetivo invio ne tanto meno sulla ricezione da parte del destinatario
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    50
    Originariamente inviato da mtx_maurizio
    Quello che hai scritto non ha senso.
    dovresti modificare così

    if (mail("$email", "$title", "$body", "$header"))
    {
    header("Location: messaggio.php?messaggio=Successo!");
    }
    else
    {
    ....

    E ricorda anche che se mail() restituisce TRUE, significa che l'invio del mail è stoto processato. Ma non da nessuna garanzia sull'effetivo invio ne tanto meno sulla ricezione da parte del destinatario
    Grazie mille per la pronta risposta però nel tuo modo ottengo una risposta ogni volta che viene inviata una mail, a mè servirebbe una risposta alla fine dell'invio di tutte le email, insomma alla fine del while.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    613
    Vedi così
    Codice PHP:
    $getemail mysql_query("SELECT email FROM newsletter") or die(mysql_error());     
    $cont=0
    $arrErr = array();

    while(
    $data=mysql_fetch_array($getemail)) {     
       
    $email=$data["email"];      
       
    $header "From: $return_email\nReply-To: $return_email\nContent-Type: text/html;   charset=iso-8859-1";     
       if (
    $cont==10) {         
          
    sleep(6);         
          
    $cont=0;     
       }     
       
    $cont++;      
       
    // Salvo l'email per la quale si è verificato l'errore
      // Puoi salvarti anche un messaggio o quant'altro ti pare        
       
    if(!mail("$email""$title""$body""$header"))
            
    $arrErr[] = $email;

    }     
    if(
    count($arrErr) > 0) {         
      
    // Gestisci l'errore che sai si è verificato per ogni email presente nell'array 
    }
    else {         
      
    header("Location: messaggio.php?messaggio=Tutto%20ok!");

    Conosci te stesso(?)
    (..e allora perchè scassi a me? )

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    50
    Leandro grazie mille per la risposta, ho appena provato a modificare lo script come mi hai indicato ed ho riprovato l'invio. Purtroppo la pagina entra in un loop "infinito" e non mi và nella pagina del risultato messaggio.php. Le email sono state mandate tutte correttamente, ho controllato io personalmente dal pannello Gestione Email.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    613
    E come fa ad andare in loop infinito?
    Non c'è niente che lo mandi in loop mi pare.

    E cmq prova ad inesrire pure un exit(); dopo l'header

    Codice PHP:
    else {         
      
    header("Location: messaggio.php?messaggio=Tutto%20ok!");
      exit();

    Conosci te stesso(?)
    (..e allora perchè scassi a me? )

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    50
    Ho aggiunto exit(); ma niente da fare... la pagina continua ad andare in loop, mi dice "Caricamento in corso...." e "In attesa di www.hostname..."
    Non capisco il perchè

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    613
    Boh, posta tutto il codice magari, anche di messaggio.php.

    Considera che 350 utenti con 6 secondi di sleep ogni 10 vuol dire 35 * 6 = 210 secondi di attesa, 3 minuti e mezzo...
    Conosci te stesso(?)
    (..e allora perchè scassi a me? )

  9. #9
    if(!mail("$email", "$title", "$body", "$header"))
    $arrErr[] = $email;

    -------

    if(!mail("$email", "$title", "$body", "$header"))
    {
    $arrErr[] = $email;
    }
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    50
    Allora ti spiego meglio... io ho una pagina crea_newsletter.php nel quale è presente il form per creare la mail:

    Codice PHP:
    ....
    <
    form method="post" action="manda.php">
    ....
    <
    input type="submit" value="Invia">
    </
    form>
    .... 
    che a sua volta punta al file manda.php (codice analizzato fino ad ora):

    Codice PHP:
    session_start(); 
    $return_email "mailinglist@***"
    $reply_email "mailinglist@***"
    $body $_POST['corpo']; 
    $title $_POST['titolo']; 
    $getemail mysql_query("SELECT email FROM newsletter") or die(mysql_error()); 
    $cont=0
    $arrErr = array(); 
    while(
    $data=mysql_fetch_array($getemail)) { 
    $email=$data["email"]; 
    $header "From: $return_email\nReply-To: $return_email\nContent-Type: text/html; charset=iso-8859-1"
    if (
    $cont==10) { 
    sleep(5); 
    $cont=0

    $cont++; 
    // Salvo l'email per la quale si è verificato l'errore 
    // Puoi salvarti anche un messaggio o quant'altro ti pare 
    if(!mail("$email""$title""$body""$header")) 
            
    $arrErr[] = $email
    if(
    count($arrErr) > 0) { 
    // Gestisci l'errore che sai si è verificato per ogni email presente nell'array 
    echo"Errore"
    exit(); 

    else { 
    header("Location: messaggio.php?messaggio=Inviata correttamente!"); 
    exit(); 

    ?> 
    che a sua volta punta a messaggio.php che stampa il messaggio nella pagina con formattazione CSS:
    Codice PHP:
    <?php 
     
    echo '


    <p id="messaggio"><h2>'
    .$_REQUEST["messaggio"].'</h2></p>
    '    
    ?>
    Grazie mille.

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.