Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    invio email tramite selezione di indirizzi da Db

    Salve a tutti, dovrei inviare un'email con allegato ad un gruppo di indirizzi email estratti da Db mysql, ma non so come costruire l'array (o una select) affinchè invii l'email solo a quelli selezionati.
    Esempio:

    <select name="gruppi">
    <option value="">Scegli a chi inviare l`email:</option>
    <option value="gruppi1">invia email a tutti i destinatari</option>
    <option value="gruppi2">invia email a chi ha usufruito del buono sconto</option>
    <option value="gruppi3">invia email a chi non ha presentato il buono sconto</option>
    </select>

    if(!isset($_POST['submit']))


    //quà non so come costruire il tutto, forse con un $recipients = array(

    ....

    $oggetto= $_POST['oggetto'];
    $testo= nl2br($_POST['testo']);
    $email= "info@info.info";
    $mail_to = // qua devo inserire gli indirizzi filtrati dal dropdown
    $mail_from = $email;
    $mail_subject = $oggetto;
    $mail_body = "<p><font color=#000000 face=verdana size=2>$testo</font></p>";
    $mail_in_html = "MIME-Version: 1.0\r\n";
    $mail_in_html .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $mail_in_html .= "From: <$mail_from>";
    if (mail($mail_to, $mail_subject, $mail_body, $mail_in_html))

    ecc.



    Chiedo un aiuto. Grazie.
    Marco

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    $mail_to non deve essere un array, la funzione mail() come primo parametro accetta una stringa.
    Ti basta concatenare gli indirizzi email separandoli con una vigola.

    E' spiegato anche sulla documentazione ufficiale, che andrebbe sempre letta quando si ha una difficoltà
    http://php.net/manual/en/function.mail.php

  3. #3
    ok per le funzioni mail. Ma il problema è come recuperare le email che assegnate, per esempio, al gruppo1 ed inviare il messaggio solo a questi, in base al select dell'utente.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Dipende da come hai impostato il db.
    Sei in grado di risalire agli utenti che rientrano nei gruppi impostati nella <select> ?

  5. #5
    il db è strutturato per richieste di buoni sconto. Oltre ai dati sensibili, ho una colonna "confermato" con valori 1 e 0 (zero). Magari con una select si può risolvere...
    Ultima modifica di vecchiesentenze; 19-12-2016 a 16:20

  6. #6
    Quello che vuole dirti Alhazred è che il tuo database dovrebbe essere strutturato in modo tale che ad un utente, o a una singola mail, sia associato un gruppo.
    Tu per inviare le mail a tutti i partecipanti del gruppo devi generare la select con l'id del gruppo (o la stringa) che lo identifica nel DB.

    Quando invierai il form, in base alla select selezionata - che ti ritornerà l'id o la stringa che identifica il gruppo - dovrai estrarre dal database tutti quegli utenti che hanno come gruppo quel preciso id_gruppo, o stringa_gruppo.

    Ad esempio, un modo per strutturare i dati potrebbe essere questo:

    ID_UTENTE |EMAIL_UTENTE | ID_GRUPPO
    1 |info@gmail.com | 2
    2 |test@gmail.com | 2
    3 |host@gmail.com |3

    codice HTML:
    <select name='InviaAGruppo'>
        <option value='2'> Invia al gruppo 2 </option>
        <option value='3'> Invia al gruppo 3 </option>
        <option value='0'> Invia a tutti i gruppi </option>
    </select>
    Recuperato il valore della select dovrai solo estrarre tutti quegli utenti che hanno come campo ID_GRUPPO lo stesso valore ricevuto.

  7. #7
    E' tutto chiaro. E avevo pensato già a questo. Il problema è che per l'email non vi è nessuna associazione a gruppi. Pensavo di poter fare qualcosa tipo una query select utilizzando il campo "confermato" che oggi può avere valore 0 e domani 1.

  8. #8
    ragazzi, ho deciso di cambiare script. Solo che adesso la prima (in ordine di Id) delle 3 email inserite nel Db.

    <?
    $query_iscritti = "SELECT * FROM richieste WHERE negozio LIKE 'NOMENEGOZIO'";
    $iscritti = mysql_query($query_iscritti, $conn) or die(mysql_error());
    $row_iscritti = mysql_fetch_assoc($iscritti);
    $totalRows_iscritti = mysql_num_rows($iscritti);


    $mittente = $_POST['mittente'];
    $destinatario = $row_iscritti['email'];
    $oggetto = $_POST['oggetto'];
    $messaggio = nl2br($_POST['messaggio']);


    $allegato = $_FILES['allegato']['tmp_name'];
    $allegato_type = $_FILES['allegato']['type'];
    $allegato_name = $_FILES['allegato']['name'];


    $headers = "From: " . $mittente;
    $msg = "";


    if (is_uploaded_file($allegato))
    {
    $file = fopen($allegato,'rb');
    $data = fread($file, filesize($allegato));
    fclose($file);
    $data = chunk_split(base64_encode($data));


    $semi_rand = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

    $headers .= "\nMIME-Version: 1.0\n";
    $headers .= "Content-Type: multipart/mixed;\n";
    $headers .= " boundary=\"{$mime_boundary}\"";


    $msg .= "This is a multi-part message in MIME format.\n\n";


    $msg .= "--{$mime_boundary}\n";


    $msg .= "Content-Type: text/html; charset=\"UTF-8\"\n";
    $msg .= "Content-Transfer-Encoding: 7bit\n\n";
    $msg .= $messaggio . "\n\n";


    $msg .= "--{$mime_boundary}\n";


    $msg .= "Content-Disposition: attachment; filename=\"{$allegato_name}\"\n";
    $msg .= "Content-Transfer-Encoding: base64\n\n";
    $msg .= $data . "\n\n";


    $msg .= "--{$mime_boundary}--\n";
    }


    else
    {
    $msg = $messaggio;
    }


    if (mail($destinatario, $oggetto, $msg, $headers))
    {

    }
    else
    {
    print "Errore";
    }

    while ($row_iscritti = mysql_fetch_assoc($iscritti));
    echo ("<p><h2 align='center'><font color='#FF0000'>EMAIL INVIATE CORRETTAMENTE !!!</font></p><p><b>Tra 5 secondi sarai reindirizzato automaticamente alla tua area di gestione Coupon. Se il redirect non funziona <a href='index.php'>clicca qu&igrave;</a></b></h2></p><script>
    setTimeout(function() {
    window.location.href = 'index.php';
    }, 5000);
    </script>");
    ?>

    il problema sembra essere quì
    while ($row_iscritti = mysql_fetch_assoc($iscritti));
    Ultima modifica di vecchiesentenze; 20-12-2016 a 16:09

  9. #9
    ho deciso di cambiare script per inviare email da indirizzi presi dal Db. Solo che adesso INVIA la prima (in ordine di Id) delle 3 email inserite nel Db.
    Nel precedente Post, il codice per chi mi volesse aiutare.

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.