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 :

envoi mail vide sur gmail [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut envoi mail vide sur gmail
    Bonjour,
    PHP n'étant pas ma spécialité, je m'en remets à vous.
    J'ai un module qui gère mes NewsLetter qui marche très bien sauf sur Gmail (enfin pour l'instant c'est le seul qui me pose problème). Je pense que le problème vient du système MIME qui est encore un peu flou pour moi.
    Voici ma fonction en espérant qu'un bon samaritin vienne à mon secours :p
    Code php : 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
    function send_mail($corps,$subject)
    {
    	//Récupérés dans la BDD
    	$mail = "monDestinataire@sonServeur.com";
    	$pseudo = "nomDuDestinataire";
     
    	$lastNews = "<div>MesDernieresNewsEnHTML</div>";
     
    	//Pour la frontiere multipart d'après ce que j'ai compris
    	$limite = "_parties_".md5 (uniqid (rand()));
     
    	$entete = "Reply-to: monMail@monServeur.fr\n"; 
    	$entete .= "From:\"NewsLetter de MonSite.fr\"<monMail@monServeur.fr>\n"; 
    	$entete .= "Date: ".date("l j F Y, G:i")."\n"; 
    	$entete .= "MIME-Version: 1.0\n"; 
    	$entete .= "Content-Type: multipart/alternative;\n"; 
    	$entete .= " boundary=\"----=" . $limite . "\"\n\n"; 
     
    	$texte_html = "------=" . $limite . "\n"; 
    	$texte_html .= "Content-Type: text/html; charset=utf-8\n"; 
    	$texte_html .= "Content-Transfer-Encoding: 7bit\n\n"; 
    	$texte_html .= "<center><b>Bonjour " . $pseudo . "</center></b><br><br><br>" . $corps . "<br><br>"
    	$texte_html .= $lastNews . "<br><br><br>Ceci est un email automatique. Veuillez ne pas y répondre. Merci.<br>"
    	$texte_html .= "Désinscription :<br><a href=\"http://www.MonSite.fr/index.php?file=Mailing&op=desabonner&email=" . $mail . "\" target=\"_blank\">"
    	$texte_html .= "http://www.MonSite.fr/index.php?file=Mailing&op=desabonner&email=" . $mail . "</a><br><br><br>MonSite.fr - monSlogan<br>";  
    	$texte_html .= "\n\n\n------=" . $limite . "\n"; 
     
    	//Conversion
    	$subject = @html_entity_decode($subject);
    	$texte = @html_entity_decode($texte_html);
    	$entete = @html_entity_decode($entete);
    	$mail = @html_entity_decode($mail);
     
    	//Envoi du mail
    	mail("$mail","$subject","$texte","$entete"); 
     
    	//Confirmation+redirection
    	echo "<br><center>NewsLetter envoyée</center><br>";
    	redirect("index.php?file=Newsletter&page=admin",2);
     
    }

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Hello

    Voici un tutoriel très bien fait qui te permettra de comprendre l'envoi de mails en PHP et la gestion MIME / Multipart: http://a-pellegrini.developpez.com/tutoriels/php/mail/

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Bonjour et merci de ta réponse. J'ai déjà lu le tuto Je poste rarement sans avoir cherché ^^ Je pense avoir une piste mais si certains d'entre vous ont des idées je prends

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Un premier élément de réponse pourrait être l'absence du CRLF pour délimiter les headers.
    Tu utilise deux \n au lieu d'utiliser \r\n (CRLF). Certains clients mail sont tatillons là dessus mais la norme dit d'utiliser des CRLF.

    Ensuite, vérifie bien que ta façon de gêrer le multipart correspond bien à la RFC: http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html

    Normalement, la source d'un mail multipart devrait ressembler à:
    Code TEXT : 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
    From:  Nathaniel Borenstein <nsb@bellcore.com> 
    To: Ned Freed <ned@innosoft.com> 
    Subject: Formatted text mail 
    MIME-Version: 1.0 
    Content-Type: multipart/alternative; boundary=boundary42 
     
     
    --boundary42 
    Content-Type: text/plain; charset=us-ascii 
     
    ...plain text version of message goes here.... 
     
    --boundary42 
    Content-Type: text/richtext 
     
    .... richtext version of same message goes here ... 
    --boundary42 
    Content-Type: text/x-whatever 
     
    .... fanciest formatted version of same  message  goes  here 
    ... 
    --boundary42--

    Donc:
    - le boundary ne prends pas de préfixe -- dans le header
    - il faut ajouter un préfixe -- avant le boundary avant chaque nouveau "morceau", le boundary est normalement suivi d'un ContentType.
    - il faut ajouter un boundary après le dernier "morceau" ayant pour préfixe et pour suffixe --

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Merci encore pour cette piste. Je regarde ça dès que possible
    C'est vrai que j'avais lu un paragraphe dans le tuto qui en parlait mais ça ne m'a pas mis du tout la puce à l'oreille :p (manque d'expérience dans le domaine sûrement ^^)

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Bonjour,

    Mon problème est résolu. Voici ce que j'ai fait :
    -remplacement de la ligne 16 par :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $entete .= "Content-Type: text/html; charset='iso-8859-1'"."\n";
    -Suppression des lignes 19, 20, 21 et 26

    Mon mail arrive correctement sur Gmail dorénavant !!! Merci encore

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

Discussions similaires

  1. [Réseau] Envoi mail direct sur smtp
    Par webrider dans le forum Langage
    Réponses: 5
    Dernier message: 19/08/2007, 18h23
  2. [Mail] Envoi d'information sur mon mail
    Par philsand77 dans le forum Langage
    Réponses: 2
    Dernier message: 06/12/2006, 16h31
  3. [mail] Timeout sur envoi de mails en HTML
    Par NorthernLights dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 05/12/2006, 10h35
  4. [Mail] envoi d'un mail, problème avec gmail
    Par kitty2006 dans le forum Langage
    Réponses: 11
    Dernier message: 30/09/2006, 08h45
  5. [Mail] controle sur l'envoi de mail
    Par titicurio dans le forum Langage
    Réponses: 6
    Dernier message: 12/09/2006, 12h29

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