Non réception des mails d'un formulaire

Petit nouveau ! | 2 Messages

24 nov. 2008, 13:34

Bonjour,
J'ai créé une page "contact" pour le site web de la compagnie. Nous sommes sur un serveur Dedibox qui a été configuré par un informaticien et dont je n'ai pas accès.
Quand je teste mon formulaire, la page web me confirme l'envoi du mail, or, je ne reçoit rien (après essais sur différentes boites mail). J'ai essayé différents scripts et tous donnent le même résultat.
Voilà celui que j'ai réussi le mieux à adapter à mon site :
Il est en deux parties (avant le html) :
<?php
// Couleur du texte des champs si erreur saisie utilisateur
$color_font_warn="#ffffff";
// Couleur de fond des champs si erreur saisie utilisateur
$color_form_warn="#058189";
// Ne rien modifier ci-dessous si vous n’êtes pas certain de ce que vous faites !
if(isset($_POST['submit'])){
	$erreur="";
	// Nettoyage des entrées
	while(list($var,$val)=each($_POST)){
	if(!is_array($val)){
		$$var=strip_tags($val);
	}else{
		while(list($arvar,$arval)=each($val)){
				$$var[$arvar]=strip_tags($arval);
			}
		}
	}
	// Formatage des entrées
	$f_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_1)));
	$f_2=strip_tags(trim($f_2));
	$f_3=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_3)));
	// Verification des champs
	if(strlen($f_1)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Votre Nom : &raquo; est vide ou incomplet.</span>";
		$errf_1=1;
	}
	if(strlen($f_4)<2){
		$erreur.="<li><span class='txterror'>Le champ &laquo; Votre demande : &raquo; est vide ou incomplet.</span>";
		$errf_4=1;
	}
	if($erreur==""){
		// Création du message
		$titre="Message de votre site";
		$tete="From:[email protected]\n";
		$corps.="Votre Nom : ".$f_1."\n";
		$corps.="Votre e-mail : ".$f_2."\n";
		$corps.="Objet : ".$f_3."\n";
		$corps.="Votre demande : ".$f_4."\n";
		if(mail("[email protected]", $titre, stripslashes($corps), $tete)){
			$ok_mail="true";
		}else{
			$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
		}
	}
}
?>

puis :
<? if($ok_mail=="true"){ ?>
	<table width='100%' border='0' cellspacing='1' cellpadding='1'>
		<tr><td><span class='txtform'>Le message ci-dessous nous a bien été transmis, et nous vous en remercions.</span></td></tr>
		<tr><td>&nbsp;</td></tr>
		<tr><td><tt><?echo nl2br(stripslashes($corps));?></tt></td></tr>
		<tr><td>&nbsp;</td></tr>
		<tr><td><span class='txtform'>Nous allons y donner suite dans les meilleurs délais.<br>A bientôt.</span></td></tr>
	</table>
<? }else{ ?>
<form action='<? echo $PHP_SELF ?>' method='post' name='Form'>
<table width='100%' border='0' cellspacing='1' cellpadding='1'>
<? if($erreur){ ?><tr><td colspan='2' bgcolor='#058189'><span class='txterror'><font color='white'><b>&nbsp;ERREUR, votre message n'a pas été transmis</b></font></span></td></tr><tr><td colspan='2'><ul><?echo$erreur?></ul></td></tr><?}?>
<tr><td colspan='2'><span class='txterror'>Les champs marqués d'un * sont obligatoires</span></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Votre Nom* :</span></td><td><input type='text' style='width:200 <?if($errf_1==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_1' value='<?echo stripslashes($f_1);?>' size='42' border='0'></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Votre e-mail :</span></td><td><input type='text' style='width:200 <?if($errf_2==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_2' value='<?echo stripslashes($f_2);?>' size='42' border='0'></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Objet :</span></td><td><input type='text' style='width:200 <?if($errf_3==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_3' value='<?echo stripslashes($f_3);?>' size='42' border='0'></td></tr>
<tr><td align='right' width='30%'><span class='txtform'>Votre demande* :</span></td><td><textarea style='width:360 <?if($errf_4==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_4' rows='6' cols='40'><?echo$f_4?></textarea></td></tr>
<tr><td align='right' width='30%'></td><td><input type='submit' name='submit' value='Envoyer' border='0'></td></tr>
</table>
</form>
<? } ?>

L'informaticien me dit recevoir les mails et avoir installé un "serveur mail postfix" et je ne comprends rien à ce qu'il me raconte. Il y a t-il un moyen de faire fonctionner ce formulaire sans repasser par l'informaticien ? J'ai lu des choses sur phpmailer, mais je n'ai pas compris comment le mettre en place...
Merci beaucoup !

ViPHP
ViPHP | 1136 Messages

24 nov. 2008, 14:33

Salut ,
L'informaticien me dit recevoir les mails et avoir installé un "serveur mail postfix"
Ce n'est pas le tout de l'installer .. il faut bien le configurer aussi ...

Car un mail(brut) qui sort comme ça d'un serveur , s'il ne passe pas par un relais valide et déclaré , il y a de forte chance que ton mail soit détruit avant même de titiller la boite du destinataire finale .

Disons que le serveur est bien paramétré non blacklisté , dont le reverse est bien déclaré ainsi que le spf au niveau du domaine ...

le mieux pour voir ce qu'il en est , et de faire plusieurs test d'envoi de mails , puis de demander à l'informaticien de te sortir les log de postfix dans la tranche horaire de tes tests ...

par défaut : /var/log/mail.log

Ainsi , tu pourras déjà voir si ton mail passe bien .. avec les bonnes adresses ...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 nov. 2008, 14:36

Bonjour,

Met ce code là dans une nouvelle page:
<?php
mail("[email protected]", "Test d'envoi d'un message", "Hello World");
?>
Si tu reçois le mail de test, c'est que le problème vient de ton script.
Si tu ne reçois pas le mail de test, reteste avec d'autres adresses e-mail (provenant de différent fournisseur de mail (exemple: gmail, hotmail, orange, free...). Si aucune de ces adresses ne reçoit le mail de test alors c'est que le serveur est mal configuré et qu'il faut accuser "l'informaticien".
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 2 Messages

25 nov. 2008, 12:52

Avant de crier au loup, et pour être sûre, voici ce que j'ai fait :
- Création d'une page essai.php
- Copier/coller le code que vous m'avez donné
- Insertion sur le serveur via Filezilla
- Ouverture avec mon navigateur.

Résultat : niet, avec 4 adresses différentes : une redirection, neuf.fr, hotmail.com et gmail.com.
Peux-t-on écrire le script sans avoir à configurer le serveur ? En gros puis-je solutionner le problème seule ?
Merci beaucoup

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

25 nov. 2008, 12:57

Donc il s'agit bien d'un problème de configuration du serveur soit du serveur PHP, soit Postfix.
Dans les 2 cas, "ton informaticien" devrait pouvoir trouver le problème en regardant les logs.
Donne lui l'url de ta page essai.php et demandes lui de régler le soucis.
Quand tout le reste a échoué, lisez le mode d'emploi...