vandouzen007
Messages postés48Date d'inscriptionlundi 21 octobre 2013StatutMembreDernière intervention29 mars 2014
-
7 févr. 2014 à 06:48
jordane45
Messages postés37521Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 3 juin 2023
-
7 févr. 2014 à 15:26
Bonjour,
Quand je modifie un utilisateur sur une application alors j'aimerai notifier l'utilisateur concerné par e-mail. Alors, mon problème c'est qu'il n'a reçu aucun mail de modification. Quelqu'un pourra me renseigner?
Merci,
Ci-dessous le code
//envoi mail
$configIP=mysql_fetch_object(config(8));
$addr_ip=$configIP->value;
$mailUserRep=mysql_query(" SELECT *
FROM user
WHERE id_user='".$_POST['id_user_hidden']."'") or die(mysql_error());
$mailUserAffiche=mysql_fetch_object($mailUserRep);
$reA=" SELECT *
FROM fonction
WHERE id_fonction='".$mailUserAffiche->id_fonction."'";
$exA = mysql_query($reA) or die(mysql_error());
$afA = mysql_fetch_object($exA);
$reB=" SELECT *
FROM user
WHERE id_user='".$mailUserAffiche->is_chef."'";
$exB = mysql_query($reB) or die(mysql_error());
$afB = mysql_fetch_object($exB);
$message_html_param="
<html>
<head></head>
<body>
Votre compte a été modifié par un administrateur!<br/>
Les nouveaux paramètres sont:<br/>
Votre Matricule est ".$mailUserAffiche->matricule."<br/>
Nom est ".$mailUserAffiche->nom."<br/>
Votre Login est ".$mailUserAffiche->login."<br/>
Votre e-mail est ".$mailUserAffiche->mail."<br/>
Vous êtes un(e) ".$afA->nom_fonction."<br/>
Supérieur Hierarchique ".$afB->nom."<br/>
Votre Mot de passe est ".$mailUserAffiche->mdp."<br/><br/>
Merci de trouver ci-joints les états relatifs à l'objet sus mentionné<br><br><
a href='http://".$addr_ip."/jov_appli/'>Accès au backoffice</a>
</body>
</html>";
sendMail($afB->mail,$mailUserAffiche->mail, $message_html_param);
Et voici la fonction mail qu qu'ai crée
function sendMail($expediteur,$destinataire,$message_html_param){
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $destinataire)) // On filtre les serveurs qui bugs
{
$passage_ligne = "\r\n";
}
else
{
$passage_ligne = "\n";
}
//=====Déclaration des messages au format texte et au format HTML
$message_html =$message_html_param;
//==========
//=====Création de la boundary
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
//==========
//=====Définition du sujet
//$objet_init = " Reclammation créer ";
$affiche=mysql_fetch_object(config(5));
$objet = $affiche->value;
//=========
//=====Sujet du mail. Allez vers config.php pour éditer
$affiche=mysql_fetch_object(config(6));
$subject=$affiche->value;
//=====adresse de l'expediteur(administrateur)
$affiche=mysql_fetch_object(config(7));
$from=$affiche->value;
//=====Création du header de l'e-mail
$header = "From: \"".$subject."\"<".$from.">".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========
//=====Création du message
$message = $passage_ligne."--".$boundary.$passage_ligne;
$message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
//=====Ajout du message au format HTML
$message.= "Content-Type: text/html; charset=\"UTF-8\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
//=====On ferme la boundary alternative
$message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
//==========
$affiche=mysql_fetch_object(config(1));
ini_set('SMTP',$affiche->value);
$affiche=mysql_fetch_object(config(2));
ini_set('smtp_port',$affiche->value);
mail($destinataire,$objet,$message,$header);
}
jordane45
Messages postés37521Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 3 juin 2023341 7 févr. 2014 à 10:14
Bonjour,
Première chose à faire lorsque tu as des soucis... c'est de vérifier si tes variables sont bonnes.
Dans ton code... lorsque tu rencontres des soucis.. n'hésites pas à rajouter des ECHO / PRINT ..
Par exemple :
// Dans ta fonction sendmail
function sendMail($expediteur,$destinataire,$message_html_param){
// TON CODE
// L'envoie du mail
$se = mail($destinataire,$objet,$message,$header);
// tu créés une variable qui contiendra l'ensemble de parametres passés à ta fonction mail pour pouvoir les "visualiser" et vérifier si ils sont bons.
$arrVariables=Array($destinataire,$objet,$message,$header,"mail:".$se);
RETURN $arrVariables;
}
// Dans ton code principal :
$result = sendMail($afB->mail,$mailUserAffiche->mail, $message_html_param);
// Debug:
Echo "<br><b> Mail =></b><br>";
Print_r($result);
Autre point :
Tu as, dans une autre question, rencontré un souci au niveau du paramétrage des smtp...
J'ai vu que tu avais mis cette question en résolu.
Tu as pu donc tester l'envoie de mail ? (en t'en envoyant un par exemple ? )
vandouzen007
Messages postés48Date d'inscriptionlundi 21 octobre 2013StatutMembreDernière intervention29 mars 20141 7 févr. 2014 à 10:25
Premièrement, j'ai changé mon code, ensuite c'est déjà testé que si le mail est vraiment envoyé ou pas. Mais j'arrive même pas à voir l'e-mail dans la boîte de réception.
Voici le test que j'ai fait
f (mail($destinataire, $objet, $message,$header))
echo "Envoi du mail réussi."."\r\n";
else
echo "Echec de l'envoi du mail."."\r\n";
et en résultat, il affiche Envoi du mail réussi. mais je ne trouve un e-mail dans ma boîte de réception
vandouzen007
Messages postés48Date d'inscriptionlundi 21 octobre 2013StatutMembreDernière intervention29 mars 20141 7 févr. 2014 à 10:31
J'ai utilisé ton code là et je vois que j'ai vraiment les valeurs que je voudrai transmettre mais le problème c'est que le mail n'arrive même pas à destinataire.
jordane45
Messages postés37521Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 3 juin 2023341 7 févr. 2014 à 10:41
et tu as testé avec l'exemple disponible dans la doc de la fonction MAIL ?
Test1
<?php
// The message
$message = "Line 1\r\nLine 2\r\nLine 3";
// In case any of our lines are larger than 70 characters, we should use wordwrap()
$message = wordwrap($message, 70, "\r\n");
// Send
mail('caffeinated@example.com', 'My Subject', $message);
?>