Tom's Guide > Forum > Programmation > [Résolu] Script d'envoi de mail

[Résolu] Script d'envoi de mail

Forum Programmation : [Résolu] Script d'envoi de mail

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !

Lire la meilleure réponse, apportée par SiM07.

Mot :    Pseudo :           
 

Bonsoir à tous,
J'ai créé une page PHP contenant un script d'envoi de mail aprés récupération du dernier enregidtrement de la table "Nouveladherent".
Le script ne m'envoie pas le mail. Lorsque j'enlève le DESC LIMIT 1 à la requête SQL, il m'envoie tous les enregistrements de la table.
Où est mon erreur, je butte sur ce problème depuis plusieurs jours.
Merci de votre aide.
Cordialement
-----------------------
Voic mon script:
<?php require_once('Connections/Connect.php'); ?>
<?php
if (!function_exists("GetSQLValueString" )) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "" )
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string" ) ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "" ) ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "" ) ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "" ) ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "" ) ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "" ) ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

mysql_select_db($database_Connect, $Connect);
$query_recupmail = "SELECT Civilite, Nom, Prenom, Mail FROM nouveladherent ORDER by num DESC LIMIT 1";
$recupmail = mysql_query($query_recupmail, $Connect) or die(mysql_error());
$row_recupmail = mysql_fetch_assoc($recupmail);
$totalRows_recupmail = mysql_num_rows($recupmail);
ini_set('sendmail_from', 'franqui34@gmail.com');

// Recuperation des resultats
while($row = mysql_fetch_row($recupmail)){
$Civilite = $row[0];
$Nom = $row[1];
$Prenom = $row[2];
$Mail = $row[3];

//Assignation de variable du destinataire
$email = "monmail@xxxx.com";
// echo $email;
// Préparation du mail d'envoi au responsable Informatique
$sujet = "Avis d'une nouvelle adhésion";
// Construction du message
$message = "Attention, réception d'une nouvelle adhésion,"."\r\n\r\n";
$message .= "La personne qui vient de s'inscrire s'appelle : "."\r\n\r\n";
$message .= "$Civilite $Nom $Prenom "."\r\n\r\n";
$message .= "Son mail est : $Mail"."\r\n\r\n";
$message .= "----------------------------------------------------------"."\r\n\r\n";
$message .= "Penser à lui envoyer un mail de confirmation de sa pré-adhésion."."\r\n\r\n";
$message .= "----------------------------------------------------------"."\r\n";
mail($email, $sujet, $message); // Envoi du mail
}
?>


Message édité par SiM07 le 07-10-2009 à 11:26:07
Pourquoi tu as $row_recupmail = mysql_fetch_assoc($recupmail); ? c'est là que tu "perds" tes infos qui sont donc dans le tableau associatif $row_recupmail. Lorsque tu fais mysql_fetch_row() il n'y a donc plus de résultat.

Vu que tu a toujours un LIMIT 1 alors le while est inutile, tu ne passera oibligatoirement que maximum une fois dans la boucle.

Code :
  1. <?php require_once('Connections/Connect.php'); ?>
  2. <?php
  3. if (!function_exists("GetSQLValueString" )) {
  4. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "" )
  5. {
  6. if (PHP_VERSION < 6) {
  7. $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  8. }
  9. $theValue = function_exists("mysql_real_escape_string" ) ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  10. switch ($theType) {
  11. case "text":
  12. $theValue = ($theValue != "" ) ? "'" . $theValue . "'" : "NULL";
  13. break;
  14. case "long":
  15. case "int":
  16. $theValue = ($theValue != "" ) ? intval($theValue) : "NULL";
  17. break;
  18. case "double":
  19. $theValue = ($theValue != "" ) ? doubleval($theValue) : "NULL";
  20. break;
  21. case "date":
  22. $theValue = ($theValue != "" ) ? "'" . $theValue . "'" : "NULL";
  23. break;
  24. case "defined":
  25. $theValue = ($theValue != "" ) ? $theDefinedValue : $theNotDefinedValue;
  26. break;
  27. }
  28. return $theValue;
  29. }
  30. }
  31. $editFormAction = $_SERVER['PHP_SELF'];
  32. if (isset($_SERVER['QUERY_STRING'])) {
  33. $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
  34. }
  35. mysql_select_db($database_Connect, $Connect);
  36. $query_recupmail = "SELECT Civilite, Nom, Prenom, Mail FROM nouveladherent ORDER by num DESC LIMIT 1";
  37. $recupmail = mysql_query($query_recupmail, $Connect) or die(mysql_error());
  38. $totalRows_recupmail = mysql_num_rows($recupmail);
  39. $row = mysql_fetch_row($recupmail);
  40. ini_set('sendmail_from', 'franqui34@gmail.com');
  41. // Recuperation des resultats
  42. if($totalRows_recupmail >= 1) {
  43. $Civilite = $row[0];
  44. $Nom = $row[1];
  45. $Prenom = $row[2];
  46. $Mail = $row[3];
  47. //Assignation de variable du destinataire
  48. $email = "monmail@xxxx.com";
  49. // echo $email;
  50. // Préparation du mail d'envoi au responsable Informatique
  51. $sujet = "Avis d'une nouvelle adhésion";
  52. // Construction du message
  53. $message = "Attention, réception d'une nouvelle adhésion,"."\r\n\r\n";
  54. $message .= "La personne qui vient de s'inscrire s'appelle : "."\r\n\r\n";
  55. $message .= "$Civilite $Nom $Prenom "."\r\n\r\n";
  56. $message .= "Son mail est : $Mail"."\r\n\r\n";
  57. $message .= "----------------------------------------------------------"."\r\n\r\n";
  58. $message .= "Penser à lui envoyer un mail de confirmation de sa pré-adhésion."."\r\n\r\n";
  59. $message .= "----------------------------------------------------------"."\r\n";
  60. mail($email, $sujet, $message); // Envoi du mail
  61. }
  62. ?>



Voilà qui devrait marcher.

En revanche tu devrait éviter le or die() et privilégier un trigger_error("ton message", E_USER_ERROR).

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.
Meilleure réponse

Pourquoi tu as $row_recupmail = mysql_fetch_assoc($recupmail); ? c'est là que tu "perds" tes infos qui sont donc dans le tableau associatif $row_recupmail. Lorsque tu fais mysql_fetch_row() il n'y a donc plus de résultat.

Vu que tu a toujours un LIMIT 1 alors le while est inutile, tu ne passera oibligatoirement que maximum une fois dans la boucle.

Code :
  1. <?php require_once('Connections/Connect.php'); ?>
  2. <?php
  3. if (!function_exists("GetSQLValueString" )) {
  4. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "" )
  5. {
  6. if (PHP_VERSION < 6) {
  7. $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  8. }
  9. $theValue = function_exists("mysql_real_escape_string" ) ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  10. switch ($theType) {
  11. case "text":
  12. $theValue = ($theValue != "" ) ? "'" . $theValue . "'" : "NULL";
  13. break;
  14. case "long":
  15. case "int":
  16. $theValue = ($theValue != "" ) ? intval($theValue) : "NULL";
  17. break;
  18. case "double":
  19. $theValue = ($theValue != "" ) ? doubleval($theValue) : "NULL";
  20. break;
  21. case "date":
  22. $theValue = ($theValue != "" ) ? "'" . $theValue . "'" : "NULL";
  23. break;
  24. case "defined":
  25. $theValue = ($theValue != "" ) ? $theDefinedValue : $theNotDefinedValue;
  26. break;
  27. }
  28. return $theValue;
  29. }
  30. }
  31. $editFormAction = $_SERVER['PHP_SELF'];
  32. if (isset($_SERVER['QUERY_STRING'])) {
  33. $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
  34. }
  35. mysql_select_db($database_Connect, $Connect);
  36. $query_recupmail = "SELECT Civilite, Nom, Prenom, Mail FROM nouveladherent ORDER by num DESC LIMIT 1";
  37. $recupmail = mysql_query($query_recupmail, $Connect) or die(mysql_error());
  38. $totalRows_recupmail = mysql_num_rows($recupmail);
  39. $row = mysql_fetch_row($recupmail);
  40. ini_set('sendmail_from', 'franqui34@gmail.com');
  41. // Recuperation des resultats
  42. if($totalRows_recupmail >= 1) {
  43. $Civilite = $row[0];
  44. $Nom = $row[1];
  45. $Prenom = $row[2];
  46. $Mail = $row[3];
  47. //Assignation de variable du destinataire
  48. $email = "monmail@xxxx.com";
  49. // echo $email;
  50. // Préparation du mail d'envoi au responsable Informatique
  51. $sujet = "Avis d'une nouvelle adhésion";
  52. // Construction du message
  53. $message = "Attention, réception d'une nouvelle adhésion,"."\r\n\r\n";
  54. $message .= "La personne qui vient de s'inscrire s'appelle : "."\r\n\r\n";
  55. $message .= "$Civilite $Nom $Prenom "."\r\n\r\n";
  56. $message .= "Son mail est : $Mail"."\r\n\r\n";
  57. $message .= "----------------------------------------------------------"."\r\n\r\n";
  58. $message .= "Penser à lui envoyer un mail de confirmation de sa pré-adhésion."."\r\n\r\n";
  59. $message .= "----------------------------------------------------------"."\r\n";
  60. mail($email, $sujet, $message); // Envoi du mail
  61. }
  62. ?>



Voilà qui devrait marcher.

En revanche tu devrait éviter le or die() et privilégier un trigger_error("ton message", E_USER_ERROR).

------------------------------ 20minutes.fr, l'information en continu.
Répondre à SiM07

Bonjour à tous,
Voilà comment j'ai résolu mon script d'envoi de mail.
<?php require_once('Connections/Connect.php'); ?>
<?php
if (!function_exists("GetSQLValueString" )) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "" )
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string" ) ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "" ) ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "" ) ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "" ) ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "" ) ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "" ) ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

mysql_select_db($database_Connect, $Connect);
$query_recupmail = "SELECT Civilite, Nom, Prenom, Mail FROM nouveladherent ORDER by num DESC LIMIT 1";
$recupmail = mysql_query($query_recupmail, $Connect) or die(mysql_error());

// Recuperation des champs
while($row=mysql_fetch_row($recupmail)) {
$Civilite = $row[0];
$Nom = $row[1];
$Prenom = $row[2];
$Mail = $row[3];

ini_set('sendmail_from', 'franqui34@gmail.com');

//Assignation de varaible du destinataire
$email = "franqui34@gmail.com";

// Préparation du mail d'envoi au responsable Informatique
$sujet = "Avis d'une nouvelle adhésion";
// Construction du message
$message = "Attention, réception d'une nouvelle adhésion,"."\r\n\r\n";
$message .= "La personne qui vient de s'inscrire s'appelle : "."\r\n\r\n";
$message .= "$Civilite $Nom $Prenom "."\r\n\r\n";
$message .= "Son mail est : $Mail"."\r\n\r\n";
$message .= "----------------------------------------------------------"."\r\n\r\n";
$message .= "Penser à lui envoyer un mail de confirmation de sa pré-adhésion."."\r\n\r\n";
$message .= "----------------------------------------------------------"."\r\n";
mail($email, $sujet, $message); // Envoi du mail
}

?>
Il fonctionne correctement et envoie bien le message à l'interessé.
Merci à Sim07.
Cordialement

Répondre à franqui34@idn
Tom's Guide > Forum > Programmation > [Résolu] Script d'envoi de mail
Aller à :

Il y a 1457 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Liens