Page 1 sur 1

Fonction mail() défectueuse ?

Posté : 17 juil. 2008, 11:48
par Ehlmo
Bonjour à tous,

Je suis en train d'ajouter la validation d'inscription par mail(1) sur mon site ainsi que la fonction "Envoyer à un ami" (2).
Exemple 1: Le visiteur rempli le formulaire, il reçoit un mail avec un lien, en cliquant dessus il valide son inscription.
Exemple 2: Le visiteur rempli le formulaire en indiquant l'adresse de son "ami" et son ami reçoit le mail.
Mon problème : le mail ne s'envoie pas tout le temps.
Ma question : Cela vient-il de ma fonction ou de mon hébergeur Online.net ?
Précisions : Lorsque le mail s'envoie, tout fonctionne parfaitement. Hier soir, seulement 1 mail sur 5 arrivait à destination, ce matin, 4 sur 5 je dirais, ce qui me fait penser à une possible surcharge de Online.net, à savoir qu'il y a souvent des problèmes (FTP inaccesible pendant un quart d'heure par exemple, BD hs pendant une heure, ...)

Voici la fonction "Envoyer à un ami" :
function envoyeramimail()
{
	$mail 	     = $_REQUEST['MAIL'];
	$nom 	     = $_REQUEST['NOM'];
	$prenom 	   = $_REQUEST['PRENOM'];
	$commentaire = $_REQUEST['COMMENTAIRE'];
	$texte = "<html>
			<head></head>
			<body>
			$nom $prenom vous invite à aller voir le site du
			<a href=\"http://***************\">Test</a>
			<br/>$commentaire</body></html>";
	$headers = "From: Webmaster Site <[email protected]>\n";
	$headers .= "MIME-Version: 1.0\n";
	$headers .= "Content-Type: text/html; charset=iso-8859-1\n";
	$to = $mail;
	$subject = "Test";
	$message = $texte;
	mail($to, $subject, $message, $headers);
	affichage();
}
La fonction d'envoi du mail de validation :
function verification()
{
	$civilite 	= $_REQUEST['CIVILITE'];
	$nom 		= $_REQUEST['NOM'];
	$prenom 	= $_REQUEST['PRENOM'];
	$societe	= $_REQUEST['SOCIETE'];
	$mail  		= $_REQUEST['MAIL'];
	$cotisation = isset($_REQUEST['COTISATION']) ? $_REQUEST['COTISATION'] : 'non';
	$participe 	= isset($_REQUEST['PARTICIPE']) ? $_REQUEST['PARTICIPE'] : 'non';
	$news 		= isset($_REQUEST['NEWS']) ? $_REQUEST['NEWS'] : 'non';
	$tarif 		= $_REQUEST['TARIF'];
	$code 		= rand();
	$status		= "Attente";
	
	require ('../Inc/init.inc');
	mysql_connect($SERVER, $LOGIN, $PASSWORD);
    mysql_select_db($DATABASE);
	$query = "INSERT INTO inscription (civilite, nom, prenom, societe, mail, cotisation, participe, news, tarif, code, status)
			  values ('$civilite', '$nom', '$prenom', '$societe', '$mail', '$cotisation', '$participe', '$news', '$tarif', '$code', '$status')";
	$result = mysql_query($query) OR die('Requête invalide : ' . mysql_error());
	
	//Partie ENVOI MAIL
	$headers = "From: Webmaster Site <[email protected]>\n";
	$headers .= "MIME-Version: 1.0\n";
	$headers .= "Content-Type: text/html; charset=iso-8859-1\n";
	$to = $mail;
	$subject = "Confirmation d'inscription";
	$message = "<html>
				<head></head>
				<body>
				Bonjour $civilite $nom,<br/>Nous avons bien reçu votre réservation et nous vous en remercions. Afin de valider votre inscription, merci de bien vouloir cliquer sur ce lien :
				<a href=\"http://****************/***/*****.php?EX=validation&nom=$nom&code=$code\">Validation</a>
				</body></html>";
	mail($to, $subject, $message, $headers);
	affichage();
}
Qu'en pensez-vous ?
Merci d'avance.

Posté : 17 juil. 2008, 12:30
par mere-teresa
AS-tu vérifié que ton hébergeur autorisait sans restrictions cette fonction ?

Posté : 17 juil. 2008, 13:14
par Invité
voila ce qu'ils disent :
La fonction mail() de PHP est activée, cependant il y a quelques limitations :

*
pas plus de 35 destinataires par appels à la fonction
*
taille des mails limité à 2Mo
*
détection antispam

La fonction mail renvoie TRUE en cas de succès et FALSE si l'une de ces conditions n'est pas respectée.
Pour le coup de l'antispam, j'ai des doutes car j'ai aussi coder une fonction d'envoi de newsletter, et avec 10 mails ca marche très bien.

Posté : 17 juil. 2008, 18:18
par caroube
Et que dis ton hébergeur quand tu lui poses la question sur le fait que des fois c'est 1 sur 5 et parfois c'est 4 sur 5 ?