[PHP] problema script invio e-mail

Punix

Nuovo Utente
20 Feb 2017
13
1
3
31
Salve ho un piccolo problema con uno script che dovrebbe selezionare da un tabella degli utenti in base alla data di nascita e poi spedire un e-mail di auguri...

codice script:
PHP:
<?php
// HERE add your data for connecting to MySQ database
$host = 'XXXX';           // MySQL server address
$user = 'XXXX';                // User name
$pass = 'XXXX';            // User`s password
$dbname = 'XXXX';          // Database name

// connect to the MySQL server
$conn = new mysqli($host, $user, $pass, $dbname);

// check connection
if (mysqli_connect_errno()) exit('Connect failed: '. mysqli_connect_error());

$oggi=date('Y-m-d');;//leggi la data atuale, attento = a come è scritta in tabella

//interroghi il db
$query="SELECT username,email FROM users WHERE date_format(compleanno,'%d %m') = date_format(curdate(),'%d %m')";
$ris=mysqli_query($conn, $query);

while($row=mysqli_fetch_assoc($ris)){
    $utente=$row['username'];
    $email=$row['email'];
}


if($ris != 0)
{   
//Invio un Email di auguri.

$to = $email;
$toname = $utente;
$subject = "Serpinter sito - Tanti Auguri!!";

$boundary = "==MP_Bound_xyccr948x==";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: multipart/alternative; boundary=\"$boundary\"\r\n";
$headers .= "From: [email protected] \r\n";
$html_msg = "<center>";
$html_msg .= "<table width=\"500\" border=0 cellpadding=\"4\">";
$html_msg .= "<tr><td align=\"center\">&nbsp;";
$html_msg .= "</td></tr>";
$html_msg .= "<tr><td>Messaggio di auguri da parte di <font color=\"red\">Serpinter</font>";
$html_msg .= "</td></tr><tr><td align=\"center\">&nbsp;";
$html_msg .= "</td></tr></table></center>";
$confirmmessage = "Ciao <font color=\"red\">" . $toname . "</font> oggi compi gli anni.\n\n";
$confirmmessage .= "<br>Questo e' un messaggio automatico che Serpinter ha voluto inviare a tutti gli utenti\n registrati al sito guida, che oggi compiono gli anni.\n\n\n<center>Tanti Auguri di Buon Compleanno!!\n <img src=\"http://i43.tinypic.com/8x33bk.gif\"></center>";
$confirmmessage .= $html_msg . "\n\n";
$confirmmessage .= '<a href="http://prova.it/login.php?message=14">Serpinter - Sito Guida.</a>';
$message = "This is a Multipart Message in MIME format\n";
$message .= "--$boundary\n";
$message .= "Content-type: text/html; charset=iso-8859-1\n";
$message .= "Content-Transfer-Encoding: 7bit\n\n";
$message .= $confirmmessage . "\n";
$message .= "--$boundary--";
$mailsent = mail($to, $subject, $message, $headers);   

echo "E-mail di auguri spedita con successo!!";

}else{
    echo "Nessun utente oggi compie gli anni";   
}
//FINE CODICE PER E-MAIL DI AUGURI

?>


lo script diciamo che funziona a metà...ovvero se viene prelevato dalla tabella users un solo utente , viene spedita l'email, insomma fa il suo lavoro, mentre se sono più di uno l ' email non viene spedita a tutti gli utenti...

per intederci meglio:
1vK3dWo.png


eseguendo la query qui vengono trovati 2 utenti che compiono gli anni...l'email viene spedita soltanto al secondo mentre al primo utente no.... questo problema non si verifica appunto quando viene trovato un solo utente.

altro problema, eseguendo lo script , se non ci sono utenti trovati dalla query dovrebbe restituirmi l echo alla fine dove mi dice che nessun utente compie gli anni, non ottengo nulla invece.
 

Antonio De Marco

Utente Attivo
28 Lug 2015
60
4
8
ademarco.it
Tutto normale, ci sono errori che di seguito vado a spiegarti.
N.1
altro problema, eseguendo lo script , se non ci sono utenti trovati dalla query dovrebbe restituirmi l echo alla fine dove mi dice che nessun utente compie gli anni, non ottengo nulla invece.
Per verificare se ci sono utenti che compiono o meno gli anni non usare $ris!=0 perchè è un'interpretazione errata. A te serve sapere se ci sono utenti a seguito di una data query e non se la query è stata eseguita (come in questo caso). Dunque usa
PHP:
mysqli_num_rows
http://php.net/manual/en/mysqli-result.num-rows.php
N.2 Mancato invio agli altri utenti.
Molto brevemente, metti il codice di invio all'interno del ciclo while perchè questa operazione (di invio email) deve essere eseguita ogni qualvolta si trova l'utente. Così facendo tu memorizzi solo l'ultimo utente ottenuto dalla query ed è per questo che ti da questo problema.

Dovrebbe funzionare:

PHP:
<?php
// HERE add your data for connecting to MySQ database
$host = 'XXXX';           // MySQL server address
$user = 'XXXX';                // User name
$pass = 'XXXX';            // User`s password
$dbname = 'XXXX';          // Database name

// connect to the MySQL server
$conn = new mysqli($host, $user, $pass, $dbname);

// check connection
if (mysqli_connect_errno()) exit('Connect failed: '. mysqli_connect_error());

$oggi=date('Y-m-d');;//leggi la data atuale, attento = a come è scritta in tabella

//interroghi il db
$query="SELECT username,email FROM users WHERE date_format(compleanno,'%d %m') = date_format(curdate(),'%d %m')";
$ris=mysqli_query($conn, $query);


if($ris->num_rows){
       
    while($row=mysqli_fetch_assoc($ris)){
        $utente=$row['username'];
        $email=$row['email'];

        //Invio un Email di auguri.

        $to = $email;
        $toname = $utente;
        $subject = "Serpinter sito - Tanti Auguri!!";

        $boundary = "==MP_Bound_xyccr948x==";
        $headers = "MIME-Version: 1.0\r\n";
        $headers .= "Content-type: multipart/alternative; boundary=\"$boundary\"\r\n";
        $headers .= "From: [email protected] \r\n";
        $html_msg = "<center>";
        $html_msg .= "<table width=\"500\" border=0 cellpadding=\"4\">";
        $html_msg .= "<tr><td align=\"center\">&nbsp;";
        $html_msg .= "</td></tr>";
        $html_msg .= "<tr><td>Messaggio di auguri da parte di <font color=\"red\">Serpinter</font>";
        $html_msg .= "</td></tr><tr><td align=\"center\">&nbsp;";
        $html_msg .= "</td></tr></table></center>";
        $confirmmessage = "Ciao <font color=\"red\">" . $toname . "</font> oggi compi gli anni.\n\n";
        $confirmmessage .= "<br>Questo e' un messaggio automatico che Serpinter ha voluto inviare a tutti gli utenti\n registrati al sito guida, che oggi compiono gli anni.\n\n\n<center>Tanti Auguri di Buon Compleanno!!\n <img src=\"http://i43.tinypic.com/8x33bk.gif\"></center>";
        $confirmmessage .= $html_msg . "\n\n";
        $confirmmessage .= '<a href="http://prova.it/login.php?message=14">Serpinter - Sito Guida.</a>';
        $message = "This is a Multipart Message in MIME format\n";
        $message .= "--$boundary\n";
        $message .= "Content-type: text/html; charset=iso-8859-1\n";
        $message .= "Content-Transfer-Encoding: 7bit\n\n";
        $message .= $confirmmessage . "\n";
        $message .= "--$boundary--";
        $mailsent = mail($to, $subject, $message, $headers);  

        echo "E-mail di auguri spedita con successo!!";
    }
   
}else{
    echo "Nessun utente oggi compie gli anni";  
}
//FINE CODICE PER E-MAIL DI AUGURI

?>
 
  • Like
Reactions: Punix

Punix

Nuovo Utente
20 Feb 2017
13
1
3
31
Grande antonio hai risolto il mio problema, si può anche chiudere grazie ancora!! ;)
 
Discussioni simili
Autore Titolo Forum Risposte Data
M [PHP] Problema script ricezione e invio posta... PHP 1
L [PHP] Problema Script 'Not Found' PHP 4
S Problema con script php-javascript PHP 2
C Problema script php PHP 2
C Problema script php PHP 1
francesco7 [Problema] esecuzione script Upload file in php PHP 0
Pi3tro [Problema]Script php PHP 1
E Problema con uno script php PHP 1
L problema invio newsletter con script proprio in php PHP 10
N problema script php mysql multi upload immagini PHP 31
D Problema script registrazione utente php mysql PHP 14
T Problema recupero dati da file [era: help script php] PHP 9
F Problema script php PHP 4
neo996sps Problema con query e script PHP PHP 4
G Problema script php PHP 0
L problema con script php PHP 9
E Problema con script ajax+php Ajax 2
B Problema invio mail con script php verso i dominii libero PHP 9
P [PHP] problema script con checkbox! PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
D problema php mysql PHP 1
D problema php mysql PHP 1
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
A Problema checkout carrello php PHP 2
G Problema caricamento tabelle MySql da PhP PHP 0
M Problema con php per calcolo costo percentuale PHP 7
O Problema Formmail in PHP su Aruba PHP 0
WebmasterFioriniAndrea Chat e php [problema] PHP 3
L [PHP] Problema con Telegram PHP 1
WebmasterFioriniAndrea [PHP] Problema che non mi fa vedere niente PHP 2
A [PHP] Problema query insert [RISOLTO] PHP 14
N [Apache] problema con estensione php Apache 0
C [PHP] Problema con download file PHP 0
M [PHP] Problema con preg_match PHP 1
gandalf1959 [PHP] problema con l'utilizzo di Header PHP 3
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
M [PHP] Problema con query select PHP 2
L Problema jQuery validation AJAX (PHP 7) PHP 6
L Problema funzione mail() PHP PHP 3
S [PHP] Problema con istruzione "use" PHP 23
A Problema PHP PHP 1
T [php] problema creazione query select-where PHP 5
M [PHP] problema if PHP 3
L [PHP] Problema su codice o server PHP 5
T [PHP] problema maggiore e minore PHP 4
Cosina [PHP] fwrite problema con le parole accentate PHP 9
M [PHP] Problema search form PHP 3
F [PHP] Problema con number_format PHP 3
L [PHP] problema count messo in una funzione. PHP 1
P [PHP] Progettino CRUD di esercitazione. Problema su $_FILE. PHP 9

Discussioni simili