Mail

Résolu
vandouzen007 Messages postés 48 Date d'inscription lundi 21 octobre 2013 Statut Membre Dernière intervention 29 mars 2014 - 7 févr. 2014 à 06:48
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 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);
					 
		
	}

5 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
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 ? )


0
vandouzen007 Messages postés 48 Date d'inscription lundi 21 octobre 2013 Statut Membre Dernière intervention 29 mars 2014 1
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
0
vandouzen007 Messages postés 48 Date d'inscription lundi 21 octobre 2013 Statut Membre Dernière intervention 29 mars 2014 1
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.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
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);
?>





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.
0
vandouzen007 Messages postés 48 Date d'inscription lundi 21 octobre 2013 Statut Membre Dernière intervention 29 mars 2014 1
7 févr. 2014 à 11:14
je dois faire quoi sur ces 2 test?
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
7 févr. 2014 à 11:59
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vandouzen007 Messages postés 48 Date d'inscription lundi 21 octobre 2013 Statut Membre Dernière intervention 29 mars 2014 1
7 févr. 2014 à 14:49
Oui, c'est fait, ça marche, je te remercie au fond du coeur. Merci
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
7 févr. 2014 à 15:26
Pense à mettre ta question en RESOLU dans ce cas.
Merci.
0
Rejoignez-nous