Page 1 sur 1

Template Mail infructueuse !

Posté : 27 déc. 2005, 06:06
par Elie
Bonjour,

J'ai crée cette fonction mais je ne recois aucun email...

Une solution ?
	$url_site = "http://www.najberg.fr/";

	function send_email($message, $sujet, $destinataire, $from) {
	
	global $url_site;
	
	$txt = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
	<html xmlns=\"http://www.w3.org/1999/xhtml\">
	<head>
	<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />
	<link href=\"".$url_site."include/style.css\" type=\"text/css\" rel=\"stylesheet\" />
	<title>".$sujet."</title>
	</head>
	<body>
	<table width=\"540\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">
	  <tr>
		<td class=\"categorie\"><img src=\"".$url_site."img/email/logo_email.gif\" width=\"313\" height=\"85\" alt=\"Logo Najberg\" /><br />
		<img src=\"".$url_site."img/pixel.gif\" alt=\"Pixel\" width=\"1\" height=\"34\" /><br />
		".$message."
		</td>
	  </tr>
	</table>
	</body>
	</html>";
	
	$entetedate  = date("D, j M Y H:i:s -0600"); // avec offset horaire
	$entetemail  = "From: ".$from."\n"; // Adresse expéditeur
	$entetemail .= "Cc: \n"; 
	$entetemail .= "Bcc: \n"; // Copies cachées
	$entetemail .= "Reply-To: ".$from."\n"; // Adresse de retour
	$entetemail .= "MIME-version: 1.0\n"; 
	$entetemail .= "Content-type: text/html; charset= iso-8859-1\n"; 
	$entetemail .= "X-Mailer: PHP/".phpversion()."\n" ;
	$entetemail .= "Date: ".$entetedate; 
	
				
	mail($destinataire,stripslashes($sujet),$txt,$entetemail);
	
	}
	
	send_email("Message", "Sujet", "[email protected]", "[email protected]");

Posté : 27 déc. 2005, 14:09
par Cyrano
Si tu essayes ça en local, as-tu correctement paramétré l'adresse du serveur SMTP à utiliser dans ton fichier de configuration de PHP (php.ini) ?

Posté : 27 déc. 2005, 14:21
par Elie
Je fais ca en ligne et ca ne marche toujours pas.

La fonction mail est active mais la fonction semble se bloquer à un moment.

Posté : 27 déc. 2005, 14:26
par Cyrano
Alors ajoute un système de gestion d'erreur. Dans ta fonction, modifie comme suit:
<?php
//....
if(mail($destinataire,stripslashes($sujet),$txt,$entetemail); )
{
    return true;
}
else
{
    return false;
}
//...
Et lors de ton appel de fonction, récupères le retour en faisant:
$envoi = send_email("Message", "Sujet", "[email protected]", "[email protected]");
if(false !== $envoi)
{
    $msg = "Envoi correctement effectué";
}
else
{
    $msg = "Erreur lors de l'evoi du message";
}
echo("<p>". $msg ."</p>\n");
Tu auras un début de réponse. Dans la cas où tu obtiens le message d'erreur d'envoi, alors il te faudra remonter dans la fonction elle-même pourchercher où se trouve l'erreur.

Posté : 27 déc. 2005, 14:40
par Elie
==> Envoi correctement effectué

Le mail semble donc partir mais n'est jamais arrivé :/

Le format HTML n'est peut etre pas supporter par le serveur ?

Edit : Apparement le probleme vient de entetemail :/

Posté : 27 déc. 2005, 14:44
par Cyrano
Le format d'envoi est indépendant du serveur : par contre il n'est pas exclu que ton message soit intercepté par ton webmail qui le classe en spam: va donc jeter un coup d'oeil sur ta boite de courrier en ligne et vérifie donc ta boîte à spam si il n'y aurait pas un paquet de messages envoyés par ton script.