Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 05/12/2009, 01h57   #1
Rédacteur
 
Avatar de Pedro
 
Inscription : octobre 2003
Messages : 5 397
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 5 397
Points : 4 750
Points : 4 750
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 :
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

Le site de mon frangin
Pedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2009, 02h32   #2
Membre éprouvé
 
Avatar de guigo
 
Inscription : juin 2006
Messages : 606
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 606
Points : 479
Points : 479
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 :
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 )
guigo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2009, 02h38   #3
Rédacteur
 
Avatar de Pedro
 
Inscription : octobre 2003
Messages : 5 397
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 5 397
Points : 4 750
Points : 4 750
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 :
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

Le site de mon frangin
Pedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2009, 02h58   #4
Rédacteur
 
Avatar de Pedro
 
Inscription : octobre 2003
Messages : 5 397
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 5 397
Points : 4 750
Points : 4 750
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

Le site de mon frangin
Pedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2009, 15h18   #5
Modérateur
 
Inscription : octobre 2008
Messages : 1 440
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 440
Points : 1 924
Points : 1 924
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.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2009, 20h29   #6
Rédacteur
 
Avatar de Pedro
 
Inscription : octobre 2003
Messages : 5 397
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 5 397
Points : 4 750
Points : 4 750
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

Le site de mon frangin
Pedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 20h55.


 
 
 
 
Partenaires

Hébergement Web