Mail [Résolu]

Signaler
Messages postés
48
Date d'inscription
lundi 21 octobre 2013
Statut
Membre
Dernière intervention
29 mars 2014
-
Messages postés
32939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juin 2021
-
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);
					 
		
	}

5 réponses

Messages postés
32939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juin 2021
351
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 ? )


Messages postés
48
Date d'inscription
lundi 21 octobre 2013
Statut
Membre
Dernière intervention
29 mars 2014
1
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
Messages postés
48
Date d'inscription
lundi 21 octobre 2013
Statut
Membre
Dernière intervention
29 mars 2014
1
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.
Messages postés
32939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juin 2021
351
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);
?>





Test2

<?php
$to      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>


Et tu modifie les variables avec TON ADRESSE MAIL pour tester si TU reçcois le mail.
Messages postés
48
Date d'inscription
lundi 21 octobre 2013
Statut
Membre
Dernière intervention
29 mars 2014
1
je dois faire quoi sur ces 2 test?
Messages postés
32939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juin 2021
351
Ben... a la place d'utiliser TA fonction d'envoie demail.. y mettre l'un de ses codes pour le tester..
Puis faire le test avec le second code..

A l'interieur, remplacer les adresses mail des destinataires ( le $TO) par TON adresse mail.

Tout ça pour voir.. si le souci vient d'un problème au niveau de ton code ou si ça vient de ton paramétrage smtp...
Messages postés
48
Date d'inscription
lundi 21 octobre 2013
Statut
Membre
Dernière intervention
29 mars 2014
1
Oui, c'est fait, ça marche, je te remercie au fond du coeur. Merci
Messages postés
32939
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 juin 2021
351
Pense à mettre ta question en RESOLU dans ce cas.
Merci.