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

PHP & Base de données Discussion :

Problème d'envoi de mail vers boite gmail


Sujet :

PHP & Base de données

  1. #1
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut Problème d'envoi de mail vers boite gmail
    Salut à tous

    Je suis en train de créer un site pour un ami qui envoie des mails autos lorsqu'un visiteur écrit un message.
    J'utilise la fonction mail() de php mais je rencontre quelques soucis:

    • Si j'ouvre le mail reçu sous Thunderbird, il s'ouvre sans problème en HTML et texte. Par contre, si je l'ouvre en passant par le webmail de gmail, le mail est vide.
    • Toujours en ouvrant le mail dans le webmail de gmail, si je clique sur afficher les détails, il me met bien les informations correctes du header sauf une info "envoyé par" qui donne "9.mail-out.ovh.net". Ca fait pas très propre et j'aimerais, comme dans d'autres mails que j'ai vérifié afficher soit rien, soit autre chose mais je ne sais pas comment faire.

    En ce qui concerne le premier problème et avant qu'on me le dise, mes lignes dans le mail sont terminées par \n et pas \r\n.
    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
    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
     
        function SendMail() {
            $destinataire='unmail@gmail.com';
            $email_expediteur='no-reply@monsite.com';
            $email_reply='no-reply@monsite.com';
            $sujet = 'Un nouveau message!!';
     
            $message_texte = 'Test';
            $message_html = 'Ceci est un <b>Test</b>';
     
            //-----------------------------------------------
            //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
            //-----------------------------------------------
     
            $frontiere = '_' . md5(uniqid(mt_rand())) . '_';
     
            //-----------------------------------------------
            //HEADERS DU MAIL
            //-----------------------------------------------
     
            $headers = 'From: "Service messages" <'.$email_expediteur.'>'."\n";
            $headers .= 'Return-Path: '.$email_reply."\n";
            $headers .= 'Reply-To: '.$email_reply."\n"; 
            $headers .= 'X-Sender: www.monsite.com'."\n";
            $headers .= 'X-mailer: php'."\n";
            $headers .= 'Importance: Normal'."\n";
            $headers .= 'MIME-Version: 1.0'."\n";
            $headers .= 'Content-Type: multipart/alternative;'."\n";
            $headers .= '    boundary="'.$frontiere.'"'."\n";
     
            //-----------------------------------------------
            //MESSAGE TEXTE
            //-----------------------------------------------
     
            $message .= '--'.$frontiere."\n";
            $message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n";
            $message .= 'Content-Transfer-Encoding: quoted-printable'."\n\n";
            $message .= $message_texte."\n\n";
     
            //-----------------------------------------------
            //MESSAGE HTML
            //-----------------------------------------------
            $message .= '--'.$frontiere."\n";
            $message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
            $message .= 'Content-Transfer-Encoding: quoted-printable'."\n\n";
            $message .= $message_html."\n\n";
     
            $message .= '--'.$frontiere."\n";
     
            if(mail($destinataire, $sujet, $message, $headers))
            {
              return 1;
            }
            else
            {
              return 0;
            }
        }
    Désolé pour le monsite.com mais je ne peux pas divulguer le nom du site...
    Bref, j'ai beau retourner le problème dans tous les sens, comparer avec d'autres mails mais je ne trouve pas.
    D'ailleurs, dans cette source, il y a pas mal de "restes" de mes tests Je pense d'ailleurs qu'une bonne partie du header est inutile.

    Je débute donc soyez indulgents

    Merci d'avance
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  2. #2
    Membre confirmé Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Points : 576
    Points
    576
    Par défaut
    Salut,
    Pour le truc du détail j'avoue que je ne sais pas et d'ailleurs je serais preneur d'une solution... Mais je ne trouve pas ça aberrent de connaitre l'adresse du serveur d'envoi pour les destinataires (si il veut faire un controle sans forcement ouvrir le mail en emp...)

    pour le code qui marche sur gmail moi j'utilise :

    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
     
    function EnvoieEmail($O, $Nom,$Prenom, $Message, $Email)
    {
    	// Le destinataire du mail
    	$destinataire = "moi@monsite.fr";
     
    	 // objet du mail
    	$objet = $O;
    	$mail_html  = 'MIME-Version: 1.0' . "\n";
    	$mail_html .= 'Content-type: text/html; charset=iso-8859-1' . "\n";
    	$mail_html .= "From:$Email" . "\n";
     
    	$Msg="coucou : ".$Nom." ".$Prenom." <br/>".$Message;
    	// on envoit le mail
    	return mail($destinataire, $objet, $Msg, $mail_html);
    }
     
    //tu peux faire une verif de l'adresse avec 
    function VerifEmail($adresse) 
    	{
    		$Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#';
    		   if(preg_match($Syntaxe,$adresse))
    				return true;
    		   else
    			 return false;
    	}
    Tchusss (et te couche pas trop tard )

  3. #3
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Merci pour ta réponse
    Citation Envoyé par guigo Voir le message
    Salut,
    Pour le truc du détail j'avoue que je ne sais pas et d'ailleurs je serais preneur d'une solution... Mais je ne trouve pas ça aberrent de connaitre l'adresse du serveur d'envoi pour les destinataires (si il veut faire un controle sans forcement ouvrir le mail en emp...)
    Oui enfin bon, comme les personnes auxquelles s'adressent ce mail seront les admins, je pensent qu'ils savent déjà d'où ça vient Donc bon, c'est vrai, c'est du rouge à lèvres mais c'est surtout pour satisfaire ma curiosité
    Citation Envoyé par guigo Voir le message
    pour le code qui marche sur gmail moi j'utilise :

    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
     
    function EnvoieEmail($O, $Nom,$Prenom, $Message, $Email)
    {
        // Le destinataire du mail
        $destinataire = "moi@monsite.fr";
     
         // objet du mail
        $objet = $O;
        $mail_html  = 'MIME-Version: 1.0' . "\n";
        $mail_html .= 'Content-type: text/html; charset=iso-8859-1' . "\n";
        $mail_html .= "From:$Email" . "\n";
     
        $Msg="coucou : ".$Nom." ".$Prenom." <br/>".$Message;
        // on envoit le mail
        return mail($destinataire, $objet, $Msg, $mail_html);
    }
     
    //tu peux faire une verif de l'adresse avec 
    function VerifEmail($adresse) 
        {
            $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#';
               if(preg_match($Syntaxe,$adresse))
                    return true;
               else
                 return false;
        }
    OK en fait, tu fais au plus simple. Ce qui n'est pas une mauvaise chose finalement
    Je m'en vais tester sans toutes les fioritures que j'ai mises.
    Citation Envoyé par guigo Voir le message
    Tchusss (et te couche pas trop tard )
    C'est vrai ça! C'est quoi c'est gens qui dev à 2h30 du mat'
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Le premier problème est résolu Sans que je sache réellement pourquoi (Qu'est-ce que je faisais de mal?) mais bon Merci beaucoup!
    Par contre, le second reste en suspens...
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    La fin de ton mail n'est pas conforme à la norme MIME car il manque deux tirets après la fin de la dernière partie (part). C'est comme ça qu'on indique que le multipart est terminé, voir la RFC2046 pour référence, et apparemment cette petite entorse à la norme ne plait pas du tout à gmail.

    Pour la ligne "envoyé par" affichée par le webmail, il s'agit d'une info disant que l'expéditeur a été authentifié et tu ne peux probablement rien y changer à la source du message sauf si tu utilises ton propre serveur de mail, c'est une mesure d'antispam/antiphishing mise en oeuvre par google.

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par estofilo Voir le message
    La fin de ton mail n'est pas conforme à la norme MIME car il manque deux tirets après la fin de la dernière partie (part). C'est comme ça qu'on indique que le multipart est terminé, voir la RFC2046 pour référence, et apparemment cette petite entorse à la norme ne plait pas du tout à gmail.
    Merci! Effectivement, gmail ne tolère aucune entorse à la règle... Ca marche impec!
    Citation Envoyé par estofilo Voir le message
    Pour la ligne "envoyé par" affichée par le webmail, il s'agit d'une info disant que l'expéditeur a été authentifié et tu ne peux probablement rien y changer à la source du message sauf si tu utilises ton propre serveur de mail, c'est une mesure d'antispam/antiphishing mise en oeuvre par google.
    OK, je ferai avec

    Merci beaucoup
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/01/2014, 00h57
  2. Réponses: 2
    Dernier message: 01/04/2011, 16h18
  3. Envois de mail vers Gmail, impossible
    Par Senaku-seishin dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 16/02/2011, 16h30
  4. Postfix et envoi vers boite gmail
    Par lavazavio dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 10/10/2008, 14h52
  5. problème envoi de mail vers l'extérieur
    Par cavocavu dans le forum Administration système
    Réponses: 2
    Dernier message: 16/07/2008, 11h22

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