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] Fonction mail() unknown sender uniquement avec Gmail


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut [Mail] Fonction mail() unknown sender uniquement avec Gmail
    Bonjour à tous et à toutes,

    j'ai réaliser avec la fonction mail une fonction automatisée d'envoi d'Email, tout se passe bien lorsque je test l'envoie d'Email (au format HTML) vers mon compte Hotmail, celui de mon boulot.
    Mais lorsque je test celui ci vers mon compte Gmail, l'entête du mail apparait sans From, et génère donc un unknown sender ! Et j'ai mon mail au format text et plus HTML comme je l'aurai voulu, du au unknown sender, je ne sais pas ! Ce qui donne ceci en version text :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Content-type: text/html; charset=iso-8859-1
     
    From: "Promos" <test@no.be>
    X-Mailer: PHP/4.3.10
     
    Message-Id: <20060308092729.A5C924A59@90plan.ovh.net>
    Date: Wed,  8 Mar 2006 10:27:29 +0100 (CET)
              <html>
              .....
              </html>
    Voici le code que j'ai utiliser pour formater mon mail:
    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
     
            //Destinataire   
            $To  = $email;
     
            //Sujet du mail
    	$Subject = 'Nos promotions du mois de Mars 2006 directement dans votre boite';
     
    	//Message envoyé
    	$Body = "
               <html>
                 <head>
                   <title>Nos promotions</title>
                 </head>
                <body>
                <table cellpadding=\"0\" cellspacing=\"0\" width=\"780\" align=\"center\">
                	<tr>
                		<td align=\"center\">
                    		<img src=\"http://www.no.be/FR/home/pub/images/banner.jpg\" width=\"780\" height=\"112\"><br>
                    	</td>
                	</tr>            
                </table>
                <br>
                <table cellpadding=\"0\" cellspacing=\"0\" width=\"780\" align=\"center\">
                	<tr>
                		<td align=\"center\">
                    		<font size=\"3\" color=\"#000000\" face=\"Verdana, Arial\"><p><u>Nos promotions du mois de Mars 2006 :</u></p></font>
                    	</td>
                	</tr>            
                </table>
                <br>
                <table cellpadding=\"0\" cellspacing=\"0\" width=\"780\" align=\"center\">
                   <tr>
                       <td bgcolor=\"006699\"><font face=\"Verdana, Arial\" size=\"3\" color=\"FFFFFF\"><b>Articles</b></font></td>
                       <td bgcolor=\"006699\"><font face=\"Verdana, Arial\" size=\"3\" color=\"FFFFFF\"><b>Prix</b></font></td>
                       <td bgcolor=\"006699\"><font face=\"Verdana, Arial\" size=\"3\" color=\"FFFFFF\"><b>Quantitées disponibles</b></font></td>
                   </tr>
                   <tr>
                      <td bgcolor=\"F5F5F5\"><font face=\"Verdana, Arial\" size=\"2\">Cannes au coup</font></td>
                      <td bgcolor=\"F5F5F5\"><font face=\"Verdana, Arial\" size=\"2\">125€</font></td>
                      <td bgcolor=\"F5F5F5\"><font face=\"Verdana, Arial\" size=\"2\">10 pièces</font></td>
                   </tr>
                </table>
                <br><br><br><br>
                <table cellpadding=\"0\" cellspacing=\"0\" width=\"780\" align=\"center\">
                	<tr>
                		<td align=\"center\">
                			<A href=\"http://www.no.be\FR\" alt=\"Visitez notre site web\">www.no.be</A>
                		</td>
                	</tr>
                <table>
                <br><br>
    	    <TABLE cellpadding=\"0\" cellspacing=\"0\" width=\"780\" align=\"center\">
    	    	<TR>
    	        	<td align=\"center\">
    	        		<FONT face=\"Verdana,Arial\" size=1>
    	        			<B>Note :</B> <I>Vous recevez cette Email promotionnel de la part de X, car vous avez volontairement souscris<br>à notre service publicitaire en vous inscrivant sur notre site!<br>Pour vous désinscrire et ne plus recevoir d'Emails publicitaires de la part de no.be cliquez sur ce lien : <A href=\"http://www.no/FR\">Désinscription de ".$email."</A></I>
    	        		</FONT>
    	        	</td>
    		</TR>
    	    </TABLE>
                </body>
              </html>";
     
         	// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
         	$Header  = 'MIME-Version: 1.0' . "\r\n";
         	$Header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
     
         	// En-têtes additionnels
         	$Header .= 'From: Promos <test@no.be>' . "\r\n";
         	$Header .= 'X-Mailer: PHP/4.3.10' . "\r\n";
     
            //Envoi du mail.
    	if (!@mail($To, $Subject, $Body, $Header)){
                    ... Test si envoie KO et j'affiche un message
                    }
    En gros rien de très complexe, ce ne sont que des test. Mais je ne comprends pas pourquoi ce même mail passe très bien vers Hotmail et le mail de mon boulot, avec un From correct dans les deux cas, mais pas vers Gmail !
    Aurais je fais une erreur quelque part, qui serait vue par Gmail mais pas par les autres?

    D'avance merci à tous pour votre aide, because I'm lost !

  2. #2
    Membre averti Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Points : 392
    Points
    392
    Par défaut
    certains service mail verifie que l'expediteur soit qqn d'identifié. (pour lutter contre les spams) peut etre que gmail participe a une action de ce genre.
    sans certitude...

  3. #3
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    Je me suis identifier comme Trust sender dans mon compte pour éviter que je ne sois pris pour un spammer, surtout avec une adresse promos@... et un Header avec publicités,promos...

    Donc je ne sais pas si malgré cela, l bloquerai lui quelque chose !
    Merci a toiXtofRoland

  4. #4
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    J'ai trouvé le problème et ceci aidera sans doute les utilisateurs d'Outlook Express et Thunderbird !
    Sous WinXP avec EasyPHP 1.8.0.1, envoyer un mail avec des headers séparés par : \r\n comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $headers  = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    Vous donnera la même erreur que moi, vous obtiendrai un mail de type texte, et si comme moi votre Form se trouve après d'autres headers terminés par \r\n, celui-ci ne sera pas pris en compte !!

    Solution : remplacer \r\n par ceci \n. , le \n sera remplacer par \r\n lors de la réception du mail par le client mail distant ! Dans le cas contraire celui-ci interprete parfois mal l'ensemble formé par le \r\n, c'est le cas de Gmail !

    Voilà, ceci aidera peut être un jour quelqu'un !

    Ciao

  5. #5
    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
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Lors d'envoi d'un mail par formulaire, n'oubliez pas de clore la liste de vos headers afin d'éviter une insertion par un utilisateur malin...
    Il me semble que cela se fait en ajoutant un couple \r\n supplémentaire à la fin.

  6. #6
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    Tu as tout à fais raison, n'ayant pas compris cela au début j'ai mis des \r\n partout, ce qui avais pour conséquence de ne plus considérer les headers suivants comme tels.
    Et en résultat on obtien un fichier texte commencant par les headers ! Donc comme Kirkis l'a bien dit, ne faite pas comme moi ! Ajouter \r\n au dernier de vos headers !!

    Ciao ciao

  7. #7
    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
    Points : 29 985
    Points
    29 985
    Par défaut
    Pour être tout à fait clair, je parle de ceci :

    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n\r\n";

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/03/2009, 19h21
  2. [Mail] Fonction mail avec multimania
    Par the_hardgamer dans le forum Langage
    Réponses: 16
    Dernier message: 05/08/2007, 23h14
  3. [Mail] fonction mail avec fichier joint
    Par tiger63 dans le forum Langage
    Réponses: 2
    Dernier message: 07/05/2007, 16h29
  4. [Mail] Fonction mail avec message d'entête
    Par lodan dans le forum Langage
    Réponses: 4
    Dernier message: 07/11/2006, 17h28
  5. Réponses: 13
    Dernier message: 03/07/2006, 12h16

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