IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Mail] Pb avec expéditeur avec mail()


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 84
    Par défaut [Mail] Pb avec expéditeur avec mail()
    bonjour,

    j'utilise la fonction mail() de php pour envoyer des mails par le biais d'un formulaire de contact.

    Malheureusement lorsque je les reçoit l'expéditeur indiqué est le nom du serveur de mail (Apache) au lieu de l'expéditeur recueilli par le formulaire (et pourtant présent dans les en-têtes bruts du mail)...
    pourquoi ????

    Merci.

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Donne-nous ton code (n'oublie pas d'anonymer les infos personnelles) et nous pourrons t'aider.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 84
    Par défaut voilà
    Citation Envoyé par Yogui
    Salut

    Donne-nous ton code (n'oublie pas d'anonymer les infos personnelles) et nous pourrons t'aider.
    merci.

    le voilà (page traitant le mail, la page du formulaire est contact.html) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    <?php
    if ((!$envoi)&&(!$valider)&&(!$annuler))
    	{
    	header("Location: http://".$_SERVER['HTTP_HOST']."/".dirname($_SERVER['PHP_SELF'])."/"."contact.html");
    	exit();
    	}
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="Content-Language" content="fr-fr" />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body id="page_contact">
    <h3>contact</h3>
    <?php 
    $mailexp=strip_tags(stripslashes($mailexp));
    $message=strip_tags(stripslashes($message));
    $sujet=strip_tags(stripslashes($sujet));
    function verif_mail($mailexp,$message)
    	{
    	$mailexp=strip_tags(stripslashes($mailexp));
    	$message=strip_tags(stripslashes($message));
    if((strlen($mailexp)<4)||(strlen($mailexp)>150)||(strlen($message)<10)||(strlen($message)>2000))
    		{
    		$message_err='<p>Veuillez remplir les champs correctement svp !</p>';
    		$message_err.='<p>&lt;- <a href="javascript:history.back();">revenir au champ de saisie du message</a></p>';
    		die($message_err);
    		}
     
    	// Controle adresse mail	
    	if(!preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$/",$mailexp))
    		{
    		$message_err='<p>cette adresse e-mail est incorrecte !</p>';
    		$message_err.='<p>&lt;- <a href="javascript:history.back();">revenir au champ de saisie du message</a></p>';
    		die($message_err);
    		}
     
    		list($compte,$domaine)=split("@",$mailexp,2);
    		if(!checkdnsrr($domaine,"MX")&&!checkdnsrr($domaine,"A"))
    			{
    			$message_err='<p>ce domaine n\'accepte pas les mails !</p>';
    			$message_err.='<p>&lt;- <a href="javascript:history.back();">revenir au champ de saisie du message</a></p>';
    			die($message_err);
    			}
    		}
    	if($envoi) verif_mail($mailexp,$message);
    	if(!$valider&&!$annuler)
    	{
    	$sujet=strip_tags(stripslashes($sujet));
    	$message=strip_tags(stripslashes(nl2br($message)),'<br>,<b>');
    	$cform='<form method="post" action="">';
    	$cform.='<input type="hidden" name="mailexp" value="'.$mailexp.'" />';
    	$cform.='<input type="hidden" name="sujet" value="'.$sujet.'" />';
    	$cform.='<input type="hidden" name="message" value="'.$message.'" /> ';
    	$cform.='<input type="submit" name="valider" value="Valider l\'envoi" /> ';
    	$cform.='<input type="button" name="modifier" value="Modifier" onClick="javascript:history.back();" />';
    	$cform.='<input type="submit" name="annuler" value="Annuler l\'envoi" /></form>';  
    	echo '<p>Vous voulez envoyer ce mail :</p><p><div class="entoure"><span class="gras">expéditeur : </span>'.$mailexp.'</div></p>';
    	echo '<p><div class="entoure"><span class="gras">objet : </span>'.$sujet.'</div></p>';
    	echo '<p><div class="entoure"><span class="gras">message</span></p><p><div class="longtexte">'.$message.'</div></p>';
    	echo $cform;
    	}
    	if($valider)
    	{$mailexp=$_POST['mailexp'];
    	$sujet=strip_tags(stripslashes($sujet));
    	$message=strip_tags(stripslashes(nl2br($message)),'<br /><b>');
    	$message.=chr(13).chr(10).'société : '.$societe.chr(13).chr(10).'SIREN/SIRET : '.$sirensiret;
    	$supplmessage='MIME-Version:"1.0" ';
    	$supplmessage.='Content-type:"text/html; charset=iso-8859-1" ';
    	$supplmessage.='From:"'.$mailexp.'"\n Reply-To:"'.$mailexp.'"\n';
    	@mail("monmail@adresse.com",utf8_decode($sujet),utf8_decode($message),$supplmessage);
    	$confirmation='<p>Votre message a été envoyé avec succès.</p><p>Merci.</p><p><a href="index.html">revenir à la page d\'accueil</a></p>';
    	echo $confirmation;
    	}
    	if($annuler)
    	{
    	$annulation='<p>Vous avez décidé de ne pas envoyer votre message.</p>';
    	$annulation.='<p>--> <a href="contact.html">rédiger un nouveau message</a></p>';
    	$annulation.='<p><-- <a href="index.html">revenir à la page d\'accueil</a></p>';
    	echo $annulation;
    	}
    ?>
    </body></html>

    juste un truc : me faites pas la remarques des variables pas marquées $_POST['variabletruc'], je l'ai mis comme ça car l'hébergeur le prend ainsi là, sinon je le met de manière sécurisée bien sûr...

    alors l'erreur serait où ?

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    ...

    Je t'en supplie, essaie de mieux cerner ton problème avant de poster ici et surtout de ne nous donner que ce qui est nécessaire !
    Ici, je n'avais besoin que de 3 lignes : l'assignation de ta variable des headers du mail...
    Tu utilises des apostrophes contenant des \n. Le comportement n'est pas celui que tu attends, c'est tout à fait normal. Les headers des mails doivent contenir le caractère "\n" (donc dans des guillemets) et non les caractères "\" et "n" (dans des apostrophes comme tu l'as fait) !

    De plus, il me semble qu'il ne faut pas que "\n" mais plutôt "\n\r". Lis bien la documentation pour davantage d'informations. Et double ton \n\r pour le dernier header (injection)...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 84
    Par défaut
    Citation Envoyé par Yogui
    ...

    Je t'en supplie, essaie de mieux cerner ton problème avant de poster ici et surtout de ne nous donner que ce qui est nécessaire !
    Ici, je n'avais besoin que de 3 lignes : l'assignation de ta variable des headers du mail...
    Tu utilises des apostrophes contenant des \n. Le comportement n'est pas celui que tu attends, c'est tout à fait normal. Les headers des mails doivent contenir le caractère "\n" (donc dans des guillemets) et non les caractères "\" et "n" (dans des apostrophes comme tu l'as fait) !
    De plus, il me semble qu'il ne faut pas que "\n" mais plutôt "\n\r". Lis bien la documentation pour davantage d'informations. Et double ton \n\r pour le dernier header (injection)...
    donc il ne s'agirait que de ça ???

    je suis sur le cul là !

    pourtant je ne vois pas comment ça pourrait bloquer, c'est con ce truc.

    Si j'utilise les ' au lieu des " c'est pour gagner en performance, à évite à php de chercher à voir s'il s'agit d'une variable ou de texte, mais je vais faire ce que tu dis et voir si ça marche?

    merci

  6. #6
    Membre émérite Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Par défaut
    Juste au passage, le gain de perfomance de '\n' par rapport à "\n" est très négligeable et de toutte façon cela ne produira pas le même résultat. Comme l'a dit Yogui, '\n' te donnera le texte \n alors que "\n" t'interprétera le caractère spécial \n.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. E-mail de l'expéditeur avec le composant serveur Outlook
    Par DavFau dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 19/01/2008, 10h09
  2. [Mail] problème d'envoi avec la fonction mail()
    Par 123quatre dans le forum Langage
    Réponses: 3
    Dernier message: 21/09/2007, 09h39
  3. Réponses: 1
    Dernier message: 09/05/2007, 21h36
  4. [Mail] Problème de réponse avec la fonction mail()
    Par kvf300 dans le forum Langage
    Réponses: 2
    Dernier message: 07/05/2007, 22h35
  5. [Mail] problème de header avec la fonction mail
    Par Jim_Nastiq dans le forum Langage
    Réponses: 5
    Dernier message: 26/07/2006, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo