Email format texte et html
Hors ligneCarroteman Le 11/08/2007 à 10:04 Profil de Carroteman Configuration de Carroteman

Bonjours,
Voivi le code dans le cour et j'aurais plusieurs questions : <?php
     
//-----------------------------------------------
     //DECLARE LES VARIABLES
     //-----------------------------------------------

     $destinataire='mail_destinataire@fai.fr';
     $email_expediteur='votre_mail@fai.fr';
     $email_reply='email_de_reponse@fai.fr';

     $message_texte='Bonjour,'."\n\n".'Voici un message au format texte'
     $message_html='<html>
     <head>
     <title>Titre</title>
     </head>
     <body>Test de message</body>
     </html>'
;

     //-----------------------------------------------
     //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
     //-----------------------------------------------

     $frontiere '-----=' md5(uniqid(mt_rand()));

     //-----------------------------------------------
     //HEADERS DU MAIL
     //-----------------------------------------------

     $headers 'From: "Nom" <'.$email_expediteur.'>'."\n";
     $headers .= 'Return-Path: <'.$email_reply.'>'."\n";
     $headers .= 'MIME-Version: 1.0'."\n";
     $headers .= 'Content-Type: multipart/alternative; boundary="'.$frontiere.'"';

     //-----------------------------------------------
     //MESSAGE TEXTE
     //-----------------------------------------------
     $message 'This is a multi-part message in MIME format.'."\n\n";

     $message .= '--'.$frontiere.'--'."\n";
     $message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n";
     $message .= 'Content-Transfer-Encoding: 8bit'."\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: 8bit'."\n\n";
     $message .= $message_html."\n\n";

     $message .= '--'.$frontiere.'--'."\n";

     if(mail($destinataire,$sujet,$message,$headers))
     {
          echo 'Le mail a été envoyé';
     }
     else
     {
          echo 'Le mail n\'a pu être envoyé';
     }
?> 


Alors mes questions sont les suivants :
- Pourquoi générer une valeur a léatoire comme barrière ?
-Les barrières servent à séparer les différentes partis mais comment le client mail aura quel parti afficher ?
- Le client mail supportant le HTML affichera t-il le format text?

Merci de vos réponses
Hors ligneAnthony Le 11/08/2007 à 10:27 Profil de Anthony Configuration de Anthony

Admin
Salut

Générer une barrière aléatoire, ça sert à ce qu'il n'y ait pas de conflit entre le corps du mail et la barrière. Imaginions que tu ais mis la barrière suivante : "--barriere--" et que tu tapes dans le corps de ton message "la --barriere-- est blanche" bah tu auras quelques soucis en générant une frontière aléatoire, tu n'auras plus ce genre de problèmes.

Ensuite le client mail saura (si il est bien conçu ce qui est généralement le cas) n'afficher que la partie qu'il sait afficher, donc pas de problèmes de ce côté là.

Pour les clients mails supportant le HTML, tout dépend du choix de l'utilisateur, par défaut il affichera le format HTML, mais il y a certains webmails qui affichent le message au format texte et tu cliques sur "voir en html" pour voir le message au format HTML.

Voilà n'hésite pas en cas de problème

a +
--

Hors ligneCarroteman Le 11/08/2007 à 17:50 Profil de Carroteman Configuration de Carroteman

merci de ta réponse :) mais j'aurais une autre question, j'ai lu la partie optimisation des requêtes SQL pour la BDD. Une solution consistait a remplacé LIMIT par BETWEEN car LIMIT allourdi la tache de mySQL.

J'aurai besoin de sélectionné les dernières donnés d'une table.
Avant je faisait : $retour = mysql_query('SELECT pseudo FROM identfiant ORDER BY id DESC LIMIT 0. 1')...
J'ai essayé avec BETWEEN, j'ai fait sa : BETWEEN : mysql_query('SELECT pseudo FROM identifiant ORDER BY id DESC WHERE id BETWEEN 0 AND 1') or die(mysql_error());

et voici ce que le serveur me renvoi : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id BETWEEN 0 AND 1' at line 1

Pouvez vous m'aider svp?
Hors ligneAnthony Le 11/08/2007 à 18:40 Profil de Anthony Configuration de Anthony

Admin
Salut,

Ton ORDER BY il faut le mettre après le BETWEEN (SELECT machin FROM table WHERE id BETWEEN 0 AND 1 ORDER BY ....)
--

Hors ligneCarroteman Le 11/08/2007 à 19:00 Profil de Carroteman Configuration de Carroteman

J'ai essayer mais maintenant le serveur ne me renvoi aucun résultat ...
ma requete est $retour =  mysql_query('SELECT pseudo FROM identifiants WHERE id BETWEEN 0 AND 1 ORDER BY id DESC') or die(mysql_error());
le serveur ne me renvoit pas le dernier membre inscrit...
Hors ligneAnthony Le 11/08/2007 à 19:10 Profil de Anthony Configuration de Anthony

Admin
Pour avoir le dernier membre inscrit un LIMIT reste encore appréciable étant donné que pour accélérer ça il te faudrait faire un SELECT pseudo FROM identifiant WHERE id=(SELECT MAX(id) FROM identifiant)

Encore faut-il que ta version de MySQL gère ce genre de requêtes.

a +
--

Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels