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 :

Problème d'entête dans la fonction mail (\r\n ?)


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
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut Problème d'entête dans la fonction mail (\r\n ?)
    Bonjour à tous,
    Je suis confronté à un soucis peu banal que je ne vois pas comment résoudre.
    J'ai développé un petit outil de mailing sur un site Internet... Jusque là, rien d'anormal et le tout assez classique : Je récupère des infos d'un formulaire et j'envoie avec la fonction mail() en utilisant des entêtes.
    Voici le code :
    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
     
      // Préparation du mail
     
      // Sujet
      $subject = $_POST['subject'];
     
      // options d'entête
      $option  = "Content-Type: text/html; charset=iso-8859-1\r\n";
      $option .= "From: expediteur@domaine.com\r\n";
      $option .= "X-Mailer: monScriptPHP version 1.0\r\n";
     
      // Message
      $message = str_replace("\"../../", "\"http://www.domaine.com/images/", stripslashes($_POST['message']));
      // ci-dessus un petit traitement du formulaire sans importance que je laisse juste pour fournir le code intégral que j'utilise
     
      // Envoie du mail
      mail("adresse@domaine.com", $subject, $message, $option);
    Si je mets mon adresse e-mail, aucun soucis. Je reçois correctement le message que ce soit dans mon outlook express que dans mon webmail.
    En revanche, si j'essaie avec l'adresse d'un ami, ça merde en réception chez lui dans son outlook. Visiblement, il n'apprécie pas les entêtes et j'ai peur que ce soit \r\n qui merdouille car il reçoit les entêtes complètes (y compris celle qui se sont rajoutés à l'arrivée du mail chez son hébergeur) en clair en haut du mail. Voir le mail reçu ci-dessous avec comme message de test ($_POST['message']) : "Bonjour !"
    From: expediteur@domaine.com X-Mailer: monScriptPHP version 1.0 Message-Id: <20090701102801.AF673413DD@www2> Date: Wed, 1 Jul 2009 12:28:01 +0200 (CEST) X-Ovh-Tracer-Id: 4212554502900325635 X-Ovh-Remote: xxx.xxx.xxx.xxx (www2.domaine.com) X-Ovh-Local: 213.186.33.32 (mx0.ovh.net) X-Spam-Check: DONE|U 0.5/N
    01-07-2009

    Bonjour !
    Du coup, l'entête n'est pas prise en compte et le message est reçu de "Expéditeur non spécifié".

    Si je regarde l'entête de son message, voir même la source, je n'y comprends plus rien car je ne retrouve rien de ce que je construis moi-même. Voilà ce que ça donne (pour la source) :

    To: <monpote@sondomaine.com>
    Subject: =?iso-8859-1?Q?TEST?=
    MIME-Version: 1.0
    Content-Type: multipart/alternative;
    boundary="----=_NextPart_000_0026_01C9FA4F.4FA762A0"
    X-Mailer: Microsoft Office Outlook, Build 11.0.5510
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579
    Thread-Index: Acn6NsePGsx1buYzRj2VUfNflAWuzg==
    X-PHP-Script: www.domaine.com/dossier/mailing.php for xxx.xxx.xxx.xxx

    This is a multi-part message in MIME format.

    ------=_NextPart_000_0026_01C9FA4F.4FA762A0
    Content-Type: text/plain;
    charset="iso-8859-1"
    Content-Transfer-Encoding: quoted-printable

    From: expediteur@domaine.com X-Mailer: monScriptPHP version 1.0 Message-Id: <20090701102801.AF673413DD@www2> Date: Wed, 1 Jul 2009
    12:28:01 +0200 (CEST) X-Ovh-Tracer-Id: 4212554502900325635 X-Ovh-Remote:
    xxx.xxx.xxx.xxx (www2.domaine.com) X-Ovh-Local: 213.186.33.32 =
    (mx0.ovh.net)
    X-Spam-Check: DONE|U 0.5/N=20

    01-07-2009

    Bonjour !

    ------=_NextPart_000_0026_01C9FA4F.4FA762A0
    Content-Type: text/html;
    charset="iso-8859-1"
    Content-Transfer-Encoding: quoted-printable

    From: expediteur@domaine.com=0D
    X-Mailer: monScriptPHP version 1.0=0D
    Message-Id: <20090701102801.AF673413DD@www2>
    Date: Wed, 1 Jul 2009 12:28:01 +0200 (CEST)
    X-Ovh-Tracer-Id: 4212554502900325635
    X-Ovh-Remote: xxx.xxx.xxx.xxx (www2.domaine.com)
    X-Ovh-Local: 213.186.33.32 (mx0.ovh.net)
    X-Spam-Check: DONE|U 0.5/N


    <p>01-07-2009</p>=0D
    <p>Bonjour !</p>=0D

    ------=_NextPart_000_0026_01C9FA4F.4FA762A0--
    Alors ? \r\n ? autre chose ? problème qui vient juste de son outlook et que je ne rencontrerais jamais ailleurs ? D'autres idées ?
    Merci d'avance pour vos réponses.

    (PS : J'ai remplacé quelques données personnelles comme des IP ou des adresses e-mails ou nom de domaine).

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 302
    Par défaut
    Personellement je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $headers .= "Mime-Version: 1.0"."\r\n";

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Merci pour cette première réponse mais... Quelle différence celà fait-il avec mon code ? Je ne vois pas ce que ça change...

  4. #4
    Membre éprouvé
    Inscrit en
    Juin 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Juin 2009
    Messages : 104
    Par défaut
    Bonjour,
    je ne suis pas du tout un spécialiste en la question,
    un gourmand utilisateur de la fonction par contre.

    J'ai noté ceci :
    il existe différents serveurs, en différentes versions,

    dans toutes mes pages qui utilise la fonction mail() j'ai noté : (je modifie mon mail par discrétion)
    # headers .= "Bcc: moi@monsite.com"; ## ATTENTION no \n for the last one !!!!
    ce qui me rappelle que, en tous cas chez OVH, mais pas sur les serveur mutualisés AMEN (du moins ceux que j'ai utilisés), la dernière ligne de mon "$headers" de PEUT PAS comporter de \n

    il doit donc il y avoir une manière serveur Microsoft, une Unix, voire des variantes, je n'en sais rien !

    et pour savoir qui du "\r\n" qui du "\n", encore une fois, je n'ai pas fouillé ...

    ceci ne devrait sûrement pas apporter de lumière, peut être que cela dépannera ...

  5. #5
    Membre éprouvé
    Inscrit en
    Juin 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Juin 2009
    Messages : 104
    Par défaut
    et tant qu'à jouer arrière-gauche au Club des Rustines :
    j'ai un truc comme ça , sur un mutualisé qui fonctionne :
    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
     
    $to = 'info@tontruc.truc';
    $subject = 'tontruc.truc : Contact & Booking';
    #######################################
    # THIS #############
    $headers = "From: Ton Truc point Truc ONLINE <info@tontruc.truc>";
    # OR #############
    # $headers = "From: We love Truc ONLINE <info@tontruc.truc>\n";
    # $headers .= "Cc: bob@autretruc.com\n";
    # $headers .= "Bcc: pat@encoreunautretruc.be"; ## ATTENTION no \n for the last one !!!!
    #######################################
    $message = 'First Name: '.stripslashes($_POST['firstname']).'<br>';
    $message .= 'Last Name: '.stripslashes($_POST['name']).'<br>';
    $message .= 'Email: '.$_POST['email'].'<br><br>';
    $message .= 'Subject: '.stripslashes($_POST['subject']).'<br><br>';
    $message .= 'Artist: '.stripslashes($nickname).'<br><br>';
    $message .= 'Message: <br>'.nl2br(stripslashes($_POST['message'])).'<br>';
    $message = '
    	<html>
    		<head>
    		   <title>'.$subject.'</title>
    			<link rel="StyleSheet" type="text/css" href="http://www.tontruc.truc/shared/css/publicmail.css">
    		</head>
    		<body>
    		'.$message.'
    		</body>
    	</html>
    ';
    $semi_rand = md5( time() ); 
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 
    $headers .= "\nMIME-Version: 1.0\n" . 
    			"Content-Type: multipart/mixed;\n" . 
    			" boundary=\"{$mime_boundary}\"";
    $message = "This is a multi-part message in MIME format.\n\n" . 
    		"--{$mime_boundary}\n" . 
    		"Content-type: text/html; charset=\"utf-8\"\n" . 
     
    		"Content-Transfer-Encoding: 7bit\n\n" . 
    		$message . "\n\n";
    if(!mail($to, $subject, $message, $headers)) {
    	echo 'Pas bon ce truc!';
    } else {
    	$mailerror = 'Mail envoyé';
    	$ajout = new db('contact', 'idcontact');
    	$ajout->AJOUTE(array('datein', 'name', 'firstname', 'email', 'subject', 'message', 'idartist'));
    }

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Merci pour ces infos et exemples...
    Ce que j'ai du mal à comprendre c'est que finalement le mail est bien reçu chez certaines personnes et pas chez d'autres...
    Le serveur a été entièrement installé et configuré par mes soins... Quelqu'un sait-il où peut se trouver la configuration d'envoi des mails ? J'irais bien voir ce que je trouve à ce niveau là...

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/10/2012, 22h51
  2. Réponses: 2
    Dernier message: 04/03/2011, 11h31
  3. Réponses: 1
    Dernier message: 05/04/2006, 14h22
  4. Réponses: 5
    Dernier message: 27/03/2006, 12h06
  5. [PL SQL] Problème avec 'case' dans une fonction
    Par divail dans le forum Oracle
    Réponses: 14
    Dernier message: 13/03/2006, 15h50

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