Envoyer mail html en php- mail recu avec codes
Fermé
langelier
Messages postés
18
Date d'inscription
vendredi 1 février 2013
Statut
Membre
Dernière intervention
18 juin 2022
-
Modifié par langelier le 7/02/2013 à 04:49
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 15 mars 2013 à 13:28
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 15 mars 2013 à 13:28
A voir également:
- Envoyer mail html en php- mail recu avec codes
- Yahoo mail - Accueil - Mail
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
- Codes ascii - Guide
- Boîte mail française gratuite - Guide
14 réponses
Salut si vous utilisez un type MIME e HTML il faut rédiger le message(le contenu de $message) en HTML, ceci dit je ne suit pas sûr et ça dépends beaucoup aussi des sécurités des (différents) service de messagerie, donc de la boîte mail.
Tout ce que je sait c'est que\n indique un retour à la ligne php et que bien sûr il ne sera pas prit en compte en HTML(si vous sautez une ligne en HTML celle ci n'est pas sauté dans l'affichage il faut mettre </br>)
Essayez de regarder un exemple parmi les nombreux exemples d'envois de mail sur le net, mais comme je vous dit c'est assez galère voire impossible que ça passe sur toutes les boîtes mail; il existe des astuces qui permettront d'avoir un affichage correct mais qui dit astuce dit perte du respect des normes et/ou bricolage.
Tout ce que je sait c'est que\n indique un retour à la ligne php et que bien sûr il ne sera pas prit en compte en HTML(si vous sautez une ligne en HTML celle ci n'est pas sauté dans l'affichage il faut mettre </br>)
Essayez de regarder un exemple parmi les nombreux exemples d'envois de mail sur le net, mais comme je vous dit c'est assez galère voire impossible que ça passe sur toutes les boîtes mail; il existe des astuces qui permettront d'avoir un affichage correct mais qui dit astuce dit perte du respect des normes et/ou bricolage.
Utilisateur anonyme
7 févr. 2013 à 15:42
7 févr. 2013 à 15:42
Bonjour
Pas sûr, mais il me semble que le double \n marque la fin des headers. Je pense que tu as fait une faute de frappe à la fin ce cette ligne :
Pas sûr, mais il me semble que le double \n marque la fin des headers. Je pense que tu as fait une faute de frappe à la fin ce cette ligne :
$headers = 'From: <'.$email_expediteur.'>'."\n\n";
Icarenna
Messages postés
121
Date d'inscription
dimanche 1 avril 2012
Statut
Membre
Dernière intervention
30 mai 2013
129
7 févr. 2013 à 16:46
7 févr. 2013 à 16:46
Bonjour, je crois que à la fin c'est "\n.\n", il manquerait un "." non?
langelier
Messages postés
18
Date d'inscription
vendredi 1 février 2013
Statut
Membre
Dernière intervention
18 juin 2022
8 févr. 2013 à 03:33
8 févr. 2013 à 03:33
merci bien pour vos réponses et pour l'erreur de syntaxe a mon headers
que j'ai corrigé comme suit :
$headers = 'From: <'.$email_expediteur.'>'."\n";
mais ca ne regle pas le problème totalement car chez gmail, on recoit le mail encore avec les caraceres codes mime ainsi que le message texte et apres le message html avec toutes les balises html.
de plus, j'ai une image d'inclu avec le texte html avec une classe floote a droite.
- sur hotmail, l'image est la mais ne flotte pas.
-sur thundebird, l'image flotte a droite mais n,est pas afficher comme ne trouve pas le lien de l'image.
- et gmail ben, c'est comme je disais tantot
j'aurais besoin d'un bon tuto pour la syntaxe avec les headers dans un mail car sur le web présentement on trouve différentes signifactions pour le meme sujet
aurais-je donc d'autres erreurs de syntaxe ? voici la mise a jour de mon code
que j'ai corrigé comme suit :
$headers = 'From: <'.$email_expediteur.'>'."\n";
mais ca ne regle pas le problème totalement car chez gmail, on recoit le mail encore avec les caraceres codes mime ainsi que le message texte et apres le message html avec toutes les balises html.
de plus, j'ai une image d'inclu avec le texte html avec une classe floote a droite.
- sur hotmail, l'image est la mais ne flotte pas.
-sur thundebird, l'image flotte a droite mais n,est pas afficher comme ne trouve pas le lien de l'image.
- et gmail ben, c'est comme je disais tantot
j'aurais besoin d'un bon tuto pour la syntaxe avec les headers dans un mail car sur le web présentement on trouve différentes signifactions pour le meme sujet
aurais-je donc d'autres erreurs de syntaxe ? voici la mise a jour de mon code
//----------------------------------------------- //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML //----------------------------------------------- $frontiere = '-----=' . md5(uniqid(mt_rand())); //----------------------------------------------- //HEADERS DU MAIL //----------------------------------------------- $headers = 'From: <'.$email_expediteur.'>'."\n"; $headers .= 'Return-Path: <'.$email_reply.'>'."\r\n"; $headers .= 'MIME-Version: 1.0'."\r\n"; $headers .= 'Content-Type: multipart/alternative; boundary="'.$frontiere.'"'; $headers .= $sujet."\r\n"; $headers.="\r\n"; //----------------------------------------------- //MESSAGE TEXTE //----------------------------------------------- $message = 'This is a multi-part message in MIME format.'."\n"; $message .= '--'.$frontiere."\n"; $message.= "Content-Type: text/html; charset=\"UTF-8\""."\n"; //$message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n"; $message .= 'Content-Transfer-Encoding: 8bit'."\n"; $message .= $message_texte."\r\n"; //----------------------------------------------- //MESSAGE HTML //----------------------------------------------- $message .= '--'.$frontiere."\n"; //$message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n"; //$message.="Content-Type: text/html; charset=utf-8\n"; $message.= "Content-Type: text/html; charset=\"UTF-8\""."\n"; // + un stripslashes et ca fonction parfaitement! a essayer apres avoir essayer decode $message .= 'Content-Transfer-Encoding: 8bit'."\n\n"; $message .= $message_html."\n\n"; $message .= '--'.$frontiere."\n"; $sql=("SELECT id, email FROM membres WHERE id IN (17,22,24,124) "); $data = mysql_query($sql) or die('Erreur - table membres: ' . mysql_error()); $totalvoituriers = mysql_num_rows($data); echo 'nombre de voituriers actifs = '. $totalvoituriers.'<br/>'; echo '<p>Voici les adresses email :'; while($info = mysql_fetch_assoc($data, MYSQL_ASSOC )) { $emailVoituriers= ($info['email']); // echo ($emailVoituriers); $tableau_res = array(); $tableau_res[$info['id']] = ($info); mail($info['email'], $sujet, $message, $headers); echo $info['email'].','; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
8 févr. 2013 à 09:12
8 févr. 2013 à 09:12
Je ne comprends pas ta logique d'écriture des headers : tantôt tu termines par \n, tantôt par \r\n, tantôt par rien du tout (Content-Type) . De plus, je crois qu'il te manque un "Subject: " à ton sujet.
Remets un peu d'ordre dans tout ça, ça va sûrement améliorer un certain nombre de choses.
Pour ce qui est du rendu du HTML selon les logiciels utilisés, je ne maîtrise pas assez pour te donner de bons conseils, mais quand on voit le mal qu'on a déjà avec les vrais navigateurs, il ne faut pas s'attendre à des merveilles avec les logiciels de courriel. Il faut s'en tenir à du html le plus basique possible.
Remets un peu d'ordre dans tout ça, ça va sûrement améliorer un certain nombre de choses.
Pour ce qui est du rendu du HTML selon les logiciels utilisés, je ne maîtrise pas assez pour te donner de bons conseils, mais quand on voit le mal qu'on a déjà avec les vrais navigateurs, il ne faut pas s'attendre à des merveilles avec les logiciels de courriel. Il faut s'en tenir à du html le plus basique possible.
langelier
Messages postés
18
Date d'inscription
vendredi 1 février 2013
Statut
Membre
Dernière intervention
18 juin 2022
Modifié par langelier le 8/02/2013 à 18:25
Modifié par langelier le 8/02/2013 à 18:25
bon, j'ai refait le script se basant sur un tuto sur le web soit sur https://www.vulgarisation-informatique.com/
yen a qui travaillent avec des r/n et d'autres avec des nn ce qui fait que je sais pu vraiment ou commecer et finir avec cet histoire de saut a la ligne.
Et ca fonctionne pas sur gmail. les autres navigateur c'est bon
yen a qui travaillent avec des r/n et d'autres avec des nn ce qui fait que je sais pu vraiment ou commecer et finir avec cet histoire de saut a la ligne.
Et ca fonctionne pas sur gmail. les autres navigateur c'est bon
<?php //----------------------------------------------- //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML //----------------------------------------------- $frontiere = '-----=' . md5(uniqid(mt_rand())); //----------------------------------------------- //HEADERS DU MAIL //----------------------------------------------- $headers = 'From: <'.$email_expediteur.'>'."\n"; $headers .= 'Return-Path: <'.$email_reply.'>'."\n"; $headers .= 'MIME-Version: 1.0'."\n"; $headers .= 'Content-Type: multipart/alternative; boundary="'.$frontiere.'"'; $headers .= $sujet."\n"; //$headers.="\n"; //----------------------------------------------- //MESSAGE TEXTE //----------------------------------------------- $message = 'This is a multi-part message in MIME format.'."\n\n"; $message .= '--'.$frontiere."\n"; $message.= 'Content-Type: text/html; charset=\"UTF-8\"'."\n"; //$message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n"; $message .= 'Content-Transfer-Encoding: 8bit'."\n"; $message .= $message_texte."\n\n"; //----------------------------------------------- //MESSAGE HTML //----------------------------------------------- $message .= '--'.$frontiere."\n"; $message.= 'Content-Type: text/html; charset=\"UTF-8\"'."\n"; $message .= 'Content-Transfer-Encoding: 8bit'."\n\n"; $message .= $message_html."\n\n"; $message .= '--'.$frontiere."\n"; //----------------------------------------------- //PIECE JOINTE //----------------------------------------------- // $message .= 'Content-Type: image/jpeg; name="covoiturageautopetit.jpg"'."\n"; // $message .= 'Content-Transfer-Encoding: base64'."\n"; // $message .= 'Content-Disposition:attachement; filename="covoiturageautopetit.jpg"'."\n\n"; // $message .= chunk_split(base64_encode(file_get_contents('../images/covoiturageautopetit.jpg')))."\n"; $sql=("SELECT id, email FROM membres WHERE id IN (17,22,24,124) "); $data = mysql_query($sql) or die('Erreur - table membres: ' . mysql_error()); $totalvoituriers = mysql_num_rows($data); echo 'nombre de voituriers actifs = '. $totalvoituriers.'<br/>'; echo '<p>Voici les adresses email :'; while($info = mysql_fetch_assoc($data, MYSQL_ASSOC )) { $emailVoituriers= ($info['email']); mail($info['email'], $sujet, $message, $headers); echo $info['email'].','; } ?>
Utilisateur anonyme
9 févr. 2013 à 00:33
9 févr. 2013 à 00:33
Tu n'as pas lu ce que j'avais écrit ?
Il te manque une fin de ligne à ton header Content-Type: multipart/alternative; et il te manque Subject: à ton header subject
Il te manque une fin de ligne à ton header Content-Type: multipart/alternative; et il te manque Subject: à ton header subject
$headers .= 'Content-Type: multipart/alternative; boundary="'.$frontiere.'"'."\n"; $headers .="Subject: $sujet\n";
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
9 févr. 2013 à 14:07
9 févr. 2013 à 14:07
et si tu essayait avec la classe PHPMailer ?
langelier
Messages postés
18
Date d'inscription
vendredi 1 février 2013
Statut
Membre
Dernière intervention
18 juin 2022
9 févr. 2013 à 22:40
9 févr. 2013 à 22:40
merci le pere pour ton soutien et j'en suis reconnaissant
pour la variable $sujet ya pas de probleme, la valeur avait été déclarer au debut du code apres le if (submit ...
mais j'ai chang. la ligne du content-type pour ajouter une fin de ligne
il s'est produit des changements a l'affichage dans gmail
il recois le mail avec l'adresse de l'expéditeur et le sujet mais pas de corps du sujet rien
Et pour la réponse de Alain,
Eb bien justement, jY songe depuis quelques jours aux classes mail, j'ai vu sur le net qu'il existe 3 ou 4 peut-etre même plus mais la j'hésitais entre Php Mailer ou pear!
c'est a partir de quel site est-il préférable de la télécharger ?
recommande tu un bon tuto en francais sur phpMailer ?
merci
pour la variable $sujet ya pas de probleme, la valeur avait été déclarer au debut du code apres le if (submit ...
mais j'ai chang. la ligne du content-type pour ajouter une fin de ligne
$headers .= 'Content-Type: multipart/alternative; boundary="'.$frontiere.'"'."\n";
il s'est produit des changements a l'affichage dans gmail
il recois le mail avec l'adresse de l'expéditeur et le sujet mais pas de corps du sujet rien
Et pour la réponse de Alain,
Eb bien justement, jY songe depuis quelques jours aux classes mail, j'ai vu sur le net qu'il existe 3 ou 4 peut-etre même plus mais la j'hésitais entre Php Mailer ou pear!
c'est a partir de quel site est-il préférable de la télécharger ?
recommande tu un bon tuto en francais sur phpMailer ?
merci
pour la variable $sujet ya pas de probleme,
C'est toi qui le dis, mais vu ce que tu as écrit par ailleurs, je me permets d'en douter.
J'insiste :
Ton header sujet commence-t-il bien par Subject: suivi d'un espace puis du sujet proprement dit ?
Car c'est ce mot Subject: qui fait que cet en-tête définit le sujet.
J'espère aussi que tu n'utilises pas de caractères spéciaux dans ton sujet, sinon il faut les échapper (et pas avec de simples \, c'est un peu plus compliqué que ça )
Ceci étant dit, si tu veux simplement envoyer des mails et que ça ne t'intéresse pas de comprendre comment ça marche, Alain_42 a raison, utilise PHPmailer.
C'est toi qui le dis, mais vu ce que tu as écrit par ailleurs, je me permets d'en douter.
J'insiste :
$headers .="Subject: $sujet\n";
Ton header sujet commence-t-il bien par Subject: suivi d'un espace puis du sujet proprement dit ?
Car c'est ce mot Subject: qui fait que cet en-tête définit le sujet.
J'espère aussi que tu n'utilises pas de caractères spéciaux dans ton sujet, sinon il faut les échapper (et pas avec de simples \, c'est un peu plus compliqué que ça )
Ceci étant dit, si tu veux simplement envoyer des mails et que ça ne t'intéresse pas de comprendre comment ça marche, Alain_42 a raison, utilise PHPmailer.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
Modifié par Alain_42 le 10/02/2013 à 15:14
Modifié par Alain_42 le 10/02/2013 à 15:14
salut,
- un tuto sur l'envoi de mail (sans PHPMailher):
https://openclassrooms.com/fr/courses
- un tuto en français avec PHPMailer:
https://stephaneey.developpez.com/tutoriel/php/phpmailer/
Par contre je ne pense pas que sujet soit dans le $header puisque la fonction mail c'est:
mail(destinataire, sujet,message,entete)
- un tuto sur l'envoi de mail (sans PHPMailher):
https://openclassrooms.com/fr/courses
- un tuto en français avec PHPMailer:
https://stephaneey.developpez.com/tutoriel/php/phpmailer/
Par contre je ne pense pas que sujet soit dans le $header puisque la fonction mail c'est:
mail(destinataire, sujet,message,entete)
merci alain42 pour les infos. j'ai lu le tuto pour le mail sans cla classe php et ajuster mon script alors les résultats sont 100% avec gmail mais un probleme d'accent sur hotmail. bon exactement le contraire de ma situation précéedente.
alors j'ai télécharger la classe PhpMailer ainsi que lu le tuto et j'ai un probleme non pas a l'envoi du mail mais encore avec la reception du mail c.a.d je recois le mail avec les balises html sur tous les navigateurs
alors j'ai télécharger la classe PhpMailer ainsi que lu le tuto et j'ai un probleme non pas a l'envoi du mail mais encore avec la reception du mail c.a.d je recois le mail avec les balises html sur tous les navigateurs
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
12 févr. 2013 à 08:42
12 févr. 2013 à 08:42
il doit te manquer html dans les parametres, lorsque tu initialise l'instance phpmailer
langelier
Messages postés
18
Date d'inscription
vendredi 1 février 2013
Statut
Membre
Dernière intervention
18 juin 2022
Modifié par langelier le 14/03/2013 à 23:36
Modifié par langelier le 14/03/2013 à 23:36
salut Alain,
désolé pour tout ce laps de temps mais j'étais occupé ailleurs ces derniers temps.
merci de te réponse mais comment modifie t-on les parametres pour html dans php Mailer ?
désolé pour tout ce laps de temps mais j'étais occupé ailleurs ces derniers temps.
merci de te réponse mais comment modifie t-on les parametres pour html dans php Mailer ?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
15 mars 2013 à 13:28
15 mars 2013 à 13:28
comment modifie t-on les parametres pour html dans php Mailer ?
en fait tu ne modifies pas les parametres dans phpmailer, mais tu creé une instance phpmailer et tu lui passes les parametres
exemple:
vas voir ce tuto:
https://stephaneey.developpez.com/tutoriel/php/phpmailer/
en fait tu ne modifies pas les parametres dans phpmailer, mais tu creé une instance phpmailer et tu lui passes les parametres
exemple:
//initialisation de l'instance $mail = new PHPmailer(); //parametres $mail->IsHTML(true); $mail->Host='hote_smtp'; //etc..
vas voir ce tuto:
https://stephaneey.developpez.com/tutoriel/php/phpmailer/