Auteur Sujet: Joli Email Mon Ami! :)  (Lu 1574 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne NICO100

  • Débutant
  • *
  • Messages: 96
    • http://www.bestiaire.org
Joli Email Mon Ami! :)
« le: 12 mars 2004 à 16:47:40 »
Salut,

J'ai une fonction qui me permet d'envoyer des emails via PHP.
Ca marche c'est cool!

Le soucis c'est que c'est moche sur la plupart des mailers!
Je m'embrouille un peu les pinceaux avec le HTML...
Je ne dois pas avoir mis les bons headers!

function envoi_email($email,$sujet,$texte,$bcc)
{
   $headers .= "From: MonNom <moi@monsite.org>\r\n";
   $headers .= "Bcc: $bcc\r\n";
   $headers .= "Reply-To: MonNom <moi@monsite.org>\r\n";
   $headers .= "X-Priority: 1\r\n";
   $headers .= "X-Mailer: MonMailer;
   $texte = "<HTML><BODY>$texte</BODY></HTML>";
   mail($email,$sujet,$texte,$headers);
}


Sous hotmail c'est cool mais le reste du temps ca fait un truc comme ca:
<HTML><BODY>Cher ami,<br><br>Je suis au regret de dire que ce mail est tout moche!<br>Veuillez accepter toutes mes excuses mais je fais de mon mieux pour l'ameliorer!<br><br>NICO100</BODY></HTML>


Pourriez-vous m'aider?
 
Le jeu du Bestiaire
http://jeu.bestiaire.org/

Hors ligne Syruus

  • Débutant
  • *
  • Messages: 3
Joli Email Mon Ami! :)
« Réponse #1 le: 12 mars 2004 à 17:01:13 »
enlève les \r à la fin de tes lignes de header ( cf mon thread ) et il faut que tu rajoutes le content-type

Hors ligne Un peu neuneu

  • Débutant
  • *
  • Messages: 100
Joli Email Mon Ami! :)
« Réponse #2 le: 12 mars 2004 à 23:41:44 »
Cadeau .. Avec la fonction ci-dessous tu peux envoyer des mails textes classiques ou HTML.

Il te suffit de créer un format de mail HTML et de prévoir des balises à rempalcer par des str_replace pour personnaliser le mail.
Type = 2 -> Format HTML
Type = n'importe quoi d'autre  -> Format texte

J'ai construit cette fonction avec un peu d'aide de joyeux drilles sur ce forum. Ce n'est que justice qu'elle revienne au plus grand nombre ...

Citer
Ce qui est utile au plus grand nombre l'emporte sur les désirs d'un seul

function em_mail($from,$to,$subject,$msg,$replyto,$type)
{
//ini_set('SMTP','smtp2.phpnet.org');
//$from = "webmaster@canihome.com";
$limite = "_parties_".md5 (uniqid (rand()));

$headers = "Date: ".date("l j F Y, G:i")."\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative;\n";
$headers .= " boundary=\"----=$limite\"\n\n";
$headers .= "Reply-To: webmaster@canihome.com\n";
$headers .= "From: Webmaster CaniHome <webmaster@canihome.com>\n";

//Le message en texte simple pour les navigateurs qui n'acceptent pas le HTML
$texte_simple .= "Ceci est un message au format MIME.\n";
$texte_simple .= "------=$limite\n";
$texte_simple .= "Content-Type: text/plain; charset=\"US-ASCII\"\n";
$texte_simple .= "Content-Transfer-Encoding: 7bit\n\n";
$texte_simple .= strip_tags(eregi_replace("<br>", "\n", $msg));
$texte_simple .= "\n\n";

if ($type == 2)
{
  $filename = "modele_mail.htm";
     if (file_exists($filename))
        {
          $fp = fopen($filename,"r"); //lecture
          while (!feof($fp))
          {
                $mod .= fgets($fp, 4096); // lecture du contenu de la ligne
          }
          fclose($fp);
        }
  //Personnalisation du modele de mail
        $mod = str_replace("<balise_sujet>",$subject,$mod);
        $mod = str_replace("<balise_message>",$msg,$mod);
  $msg = $mod;
}

//le message en html original
$texte_html = "------=$limite\n";
$texte_html .= "Content-Type: text/html; charset=\"US-ASCII\"\n";
$texte_html .= "Content-Transfer-Encoding: 7bit\n\n";
$texte_html .= $msg;
$texte_html .= "\n\n\n------=$limite\n";

@mail($to, $subject, $texte_simple.$texte_html, $headers);
}
Ce qui est utile au plus grand nombre l'emporte sur les désirs d'un seul !

CaniHome

Hors ligne MaximuS

  • Expert
  • ****
  • Messages: 577
    • The Caribbean Weblog
Joli Email Mon Ami! :)
« Réponse #3 le: 13 mars 2004 à 04:34:34 »
Très très bien Un peu neuneu ;)
Je vois que tu t'y met pour de bon :P
Je cherchais ce tuto justement :)
merci encore ;)

Hors ligne Un peu neuneu

  • Débutant
  • *
  • Messages: 100
Joli Email Mon Ami! :)
« Réponse #4 le: 13 mars 2004 à 14:37:43 »
De rien MaximuS ! C'est un bonheur de te rendre heureux  :P  
Ce qui est utile au plus grand nombre l'emporte sur les désirs d'un seul !

CaniHome

Hors ligne NICO100

  • Débutant
  • *
  • Messages: 96
    • http://www.bestiaire.org
Joli Email Mon Ami! :)
« Réponse #5 le: 13 mars 2004 à 22:00:44 »
Merci,

mais j'ai des questions:

Qu'est-ce que cette 'boundary'? A quoi sert-elle?
Quel est ce fichier modele_mail.htm?
Le jeu du Bestiaire
http://jeu.bestiaire.org/

Hors ligne Un peu neuneu

  • Débutant
  • *
  • Messages: 100
Joli Email Mon Ami! :)
« Réponse #6 le: 13 mars 2004 à 22:47:22 »
Alors ... La "boundary" n'est pas de moi ... Mais d'après ce que j'ai compris, dans un message SMTP il faut créer des délimiteurs d'entêtes par des identifiants uniques .. Ici la ligne :

$limite = "_parties_".md5 (uniqid (rand()));
crée un identifiant MD5 unique, qui est ensuite inséré dans les entêtes SMTP par :

$headers .= " boundary=\"----=$limite\"\n\n";
On utilise ce délimiteur également pour indiquer la partie "texte_simple" et la partie "texte_html". Le client de messagerie sait ainsi retrouver le texte HTML ou le texte simple selon ses capacités d'affichages.

Pour le modele_mail.htm là c'est de moi  :D  ! Alors je sais mieux expliqué (of course !).

C'est un fichier HTML classique que tu crée et qui servira de modele pour ton envoi de mail. Par exemple un fichier avec un le titre de ton site, ton logo, un tableau HTML avec des couleurs etc .. Enfin bref tu fais un fichier qui te plait ! Comme tu aimerais qu'il s'affiche chez tes correspondants. Ensuite dans ce fichier tu prévois des zones que tu devras personnaliser selon le contenu du mail que tu vas émettre. Tu crées des balises facile à reconnaitre dans ce fichier et que tu pourras remplacer par des valeurs personnalisées en utilisant str_replace.


Ici je charge mon fichier modele :

$filename = "modele_mail.htm";
    if (file_exists($filename))
       {
         $fp = fopen($filename,"r"); //lecture
         while (!feof($fp))
         {
               $mod .= fgets($fp, 4096); // lecture du contenu de la ligne
         }
         fclose($fp);
       }

et ici j'adapte les balises <balise_sujet> et <balise_message>:

//Personnalisation du modele de mail
       $mod = str_replace("<balise_sujet>",$subject,$mod);
       $mod = str_replace("<balise_message>",$msg,$mod);
 $msg = $mod;


Pour exemple, voici le code de mon fichier modele_mail :

<html>
<head>
<title>CANIHOME: Mail d'information</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#9999FF">
<table width="100%" border="0" cellspacing="0" cellpadding="3">
  <tr>
    <td width="85%" valign="top" height="148">
      <table width="100%" border="0" cellspacing="2" cellpadding="3">
        <tr>
          <td width="34%">
            <img src="http://www.canihome.com/im_gene/logop.jpg" width="100" height="76">
          </td>
          <td width="2%">
          </td>
          <td width="64%"><font face="Arial, Helvetica, sans-serif" size="4" color="#336633"><#titre#></font></td>
        </tr>
        <tr>
          <td colspan="3" height="3" bgcolor="#CC0000">&nbsp;
          </td>
        </tr>
        <tr>
          <td colspan="3" height="87">
            <p><font face="Arial, Helvetica, sans-serif" size="2"><#message#></font></p>
            <p align="center">&nbsp;</p>
          </td>
        </tr>
       </table>
      <p><font face="Arial, Helvetica, sans-serif" size="2">Merci  
        et à bientôt sur CaniHome ! </font></p>
      <p><font face="Arial, Helvetica, sans-serif" size="2"><b>L'équipe CaniHome.
        </b> </font></p>
    </td>
  </tr>
</table>
</body>
</html>

Tu y trouves deux balises : <#titre#> et <#message#>. Ca me permet de personnaliser une zone titre et une zone message dans le fichier ...

Est-ce clair ? :(



 
Ce qui est utile au plus grand nombre l'emporte sur les désirs d'un seul !

CaniHome

Hors ligne MaximuS

  • Expert
  • ****
  • Messages: 577
    • The Caribbean Weblog
Joli Email Mon Ami! :)
« Réponse #7 le: 14 mars 2004 à 01:37:34 »
Ne pas oublier de mettre des chemins d'accès absolus pour les images et les liens dans le fichier HTML ....