Visualizzazione risultati 1 fino 4 di 4

Discussione: [PHP]Invio Mail con script PHP

  1. #1
    Guest

    Predefinito [PHP]Invio Mail con script PHP

    Ciao!
    Ho creato uno script in PHP per mandare una mail a tutti gli utenti contenuti in un DataBase..

    Il codice è il seguente:

    <?php

    include 'db_par.php';

    $db = mysql_connect($db_host, $db_user, $db_password);

    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");

    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    $query = " SELECT email_address, username FROM `users2` WHERE 1";

    $result = mysql_query($query, $db);

    while ($riga = mysql_fetch_row($result)){

    /* recipients */
    $to = "$riga[0]";

    /* subject */
    $subject = "xxx";

    /* message */
    $message = '
    xx';


    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";


    $headers .= "To: $riga[1] <$riga[0]>\r\n";
    $headers .= "From: xx<xx@xx.it>\r\n";


    /*$ret = mail($to, $subject, $message, $headers);
    if ($ret) echo "posta inviata a $riga[0]<br>";*/
    echo"$riga[0];";

    }

    echo"Fuori ciclo<br>";
    mysql_close($db);

    ?>

    Il problema è che non funziona affatto bene. Me ne manda solo 3-4 alla volta pescando apparentemente a caso nel DB.
    Il problema sta nella fuzione mail(), il ciclo while funzione correttamante..
    Il ciclo mi tira fuori tutti gli indirizzi nell'ordine gisto..ma la funzione mail poi non manda la mail a tutti e soprattutto non so perchè il programma esce dal ciclo prima di mandare il messaggio a tutti gli indirizzi estratti..

    Qualcuno sa perchè?

    Grazie per le eventuali riposte..

  2. #2
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito

    su altervista tra una chimata a mail() e l'altra devono passare almeno 1/2secondi altrimenti le mail vengono ignorate...

    a tale scopo di basta semplicemente fare un'unica chiamata a mail() specificando tutti gli indirizzi come BCC: ;)

    questo un esempio perfettamente funzionante:

    $from = "tuamail@dominio.com";
    $intestazione = "From: $from\n";
    $intestazione .= "Bcc: $from";
    while(list($user_email) = sql_fetch_row($result, $dbi)) {
    $intestazione .= ", $user_email";
    }
    $intestazione .= "\n";
    mail($from, $subject, $content, $intestazione);
    in pratica usi il while per raccogliere gli indirizzi ma la chiamata a mail() è una sola ;)

    http://forum.altervista.org/showthread.php?t=22009
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  3. #3
    Guest

    Predefinito

    Grazie mille!
    Sei stato veramente molto gentile e soprttutto molto esauriente con la tua risposta..

    Grazie davvero..

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da Evcz
    su altervista tra una chimata a mail() e l'altra devono passare almeno 1/2secondi altrimenti le mail vengono ignorate...

    a tale scopo di basta semplicemente fare un'unica chiamata a mail() specificando tutti gli indirizzi come BCC: ;)

    questo un esempio perfettamente funzionante:



    in pratica usi il while per raccogliere gli indirizzi ma la chiamata a mail() è una sola ;)

    http://forum.altervista.org/showthread.php?t=22009
    io la uso per la mail list del mio sito se non ci fosse evcz :eyes:

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •