Mail php ne fonctionne pas...

Résolu/Fermé
Woody69 Messages postés 125 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 22 mars 2012 - 1 mai 2010 à 22:20
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 2 mai 2010 à 11:51
Bonjour,

J'ai un script php qui envoi les informations saisies par mail... le script s'éxécute bien, mais je ne reçois rien.

Pourquoi ? Merci...!

<?php
// Couleur du texte des champs si erreur saisie utilisateur
$color_font_warn="#FF0000";
// Couleur de fond des champs si erreur saisie utilisateur
$color_form_warn="#FFCC66";
// 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=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_2)));
	$f_3=strip_tags(trim($f_3));
	// Verification des champs
	if(strlen($f_1)<2){
		$erreur.="<li><span class='txterror'>Le champ « Nom » est vide ou incomplet.</span>";
		$errf_1=1;
	}
	if(strlen($f_2)<2){
		$erreur.="<li><span class='txterror'>Le champ « Prénom » est vide ou incomplet.</span>";
		$errf_2=1;
	}
	if(strlen($f_3)<2){
		$erreur.="<li><span class='txterror'>Le champ « Adresse e-mail valide » est vide ou incomplet.</span>";
		$errf_3=1;
	}else{
		if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_'a-z{|}~]+'.
		'@'.
		'[-!#$%&\'*+\/0-9=?A-Z^_'a-z{|}~]+\.'.
		'[-!#$%&\'*+\./0-9=?A-Z^_'a-z{|}~]+$',
		$f_3)){
			$erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
			$errf_3=1;
		}
	}
	if($erreur==""){
		// Création du message
		$titre="Nouveau membre !";
		$tete="From:".$f_3."\n";
		$corps.="Nom : ".$f_1."\n";
		$corps.="Prénom : ".$f_2."\n";
		$corps.="Adresse e-mail valide : ".$f_3."\n";
		if(mail("inscriptions@toprougemedias.fr", $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>";
		}
	}
}
?>
A voir également:

13 réponses

avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
1 mai 2010 à 22:21
Si tu testes en local ou sur un dédié, tu dois installer un serveur SMTP.
Et si tu es en mutualisé, c'est que ton hébergement n'autorise pas l'utilisation de mail()
0
Woody69 Messages postés 125 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 22 mars 2012 9
1 mai 2010 à 22:25
En fait, ce script fonctionnait bien quand j'utilisais le webmail de mon hébergeur web.

Hors maintenant c'est Gmail qui est devenu le webmail de l'adresse qui reçoit le mail.
...et il n'y a rien dans les spams...
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
1 mai 2010 à 22:32
Essaye en précisant les entêtes, comme ceci :
<?php
     $to      = 'personne@example.com';
     $subject = 'le sujet';
     $message = 'Bonjour !';
     $headers = 'From: webmaster@example.com' . "\r\n" .
     'Reply-To: webmaster@example.com' . "\r\n" .
     'X-Mailer: PHP/' . phpversion();

     mail($to, $subject, $message, $headers);
 ?>
(exemple prit sur la doc. officielle)
0
Woody69 Messages postés 125 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 22 mars 2012 9
1 mai 2010 à 22:37
Merci,

J'ai du mal à voir comment modifier mon script (étant donné qu'il est en partie généré,...)

Pourrais-tu effectuer les modifs dessus ?

Merci beaucoup :)
0

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

Posez votre question
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
1 mai 2010 à 22:50
Voilà : http://paste.pocoo.org/show/208600/
0
Woody69 Messages postés 125 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 22 mars 2012 9
1 mai 2010 à 22:53
Je te remercie infiniment.

Je teste ça tout de suite et te tiens au courant.
0
Woody69 Messages postés 125 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 22 mars 2012 9
1 mai 2010 à 22:59
Bon, j'ai l'erreur suivante :


Parse error: syntax error, unexpected T_STRING in /home/toprouge/public_html/register.php on line 40

Qu'est-ce qu'il ne lui plait pas ?
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
1 mai 2010 à 23:18
Essaye comme ça : http://paste.pocoo.org/show/208611/
Dans ta regex d'origine, il y a des apostrophes non échappés.
0
Woody69 Messages postés 125 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 22 mars 2012 9
1 mai 2010 à 23:20
Ok, je viens de retester.

Voici à nouveau l'erreur :

Parse error: syntax error, unexpected T_IF in /home/toprouge/public_html/register.php on line 60
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
1 mai 2010 à 23:22
Supprimes la ligne 56, j'ai oublié de la retirer en mettant ajouter des données dans $tete (le "From" étant déjà indiqué, j'avais mis cette ligne de côté).
0
Woody69 Messages postés 125 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 22 mars 2012 9
1 mai 2010 à 23:30
Bon ben écoute, cette fois je n'ai pas d'erreurs, mail le message n'arrive pas.

J'ai changé l'adresse d'envoi en en mettant une autre à moi, sur SFR et ça fonctionne.

Gmail semble bloquer l'adresse qu'il gère lui-même ! c'est bizare.

Est-ce que gmail est plus rigoureux que les autres webmail dans la lecture des entêtes des messages ?
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
1 mai 2010 à 23:40
Est-ce que gmail est plus rigoureux que les autres webmail dans la lecture des entêtes des messages ?
Je t'ai proposé d'ajouter des entêtes (le X-Mailer) car ça peut parfois régler le problème.
0
Woody69 Messages postés 125 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 22 mars 2012 9
1 mai 2010 à 23:44
Oui, j'ai bien utilisé ta version de mon script modifiée, mais ce la ne change rien...
0
as tu testé la fonction mail() pour savoir si elle marchait tout simplement une page avec juste:

<?php

mail('monemail@email.fr','sujet test' , 'ceci est un test', 'From: webmaster@example.com');

?>

Quel est le contenu du mail? Si c'est du html ou autre lanage de balisage il faut indiquer le TYPE MIME(il n'y a pas non plus de solutions miracles, certaines boites mails bloquebnt systématiquement du contenu venant de tel ou tel expéditeur...)

@https://www.php.net/manual/fr/function.mail.php
// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
2 mai 2010 à 01:53
Je cite Woody69 :
« J'ai changé l'adresse d'envoi en en mettant une autre à moi, sur SFR et ça fonctionne. »
Donc je ne vois pas ce que tu cherches à vérifier.
0
Woody69 Messages postés 125 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 22 mars 2012 9
2 mai 2010 à 10:24
Je ne cherche pas à vérifier quelque chose, je constate juste que lorsque le mail est envoyée à une adresse gmail (ou gérée par gmail), le mail n'arrive pas, ce qui est embêtant !
0
Woody69 Messages postés 125 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 22 mars 2012 9
2 mai 2010 à 10:27
Comme je le disais plus haut, le script fonctionne très bien avec n'importe quelle adresse email sauf celles qui dépendent de gmail !.

J'ai vu que d'autres utilisateurs avaient déjà rencontré ce type de problème. Apparemment, il faut que la structure du message et en particulier celle des headers soit bien rigoureuse...
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
2 mai 2010 à 11:51
Essaye avec ça comme entêtes :
$tete= 'From:'.$f_3."\r\n".
  'Reply-To: '.$f_3."\r\n".
  'X-Mailer: PHP/'.phpversion()."\r\n".
  'MIME-Version: 1.0'."\r\n".
  'Content-type: text/plain; charset=iso-8859-1'."\r\n".
  'Content-Transfer-Encoding: 8bit'."\r\n".
  'X-Priority: 1'."\r\n".
  'X-MSMail-Priority: High'."\r\n".
  'X-originating-IP: '.$_SERVER['REMOTE_ADDR']."\r\n";
À la 5ème ligne, si tu n'es pas en iso-8859-1, mets ton encodage (utf-8, ...).
0