Christobal |
Le 27/04/2008 à 17:15 |
|
|
bonjour J'ai testé le tuto pour envoyer un mail en multi format (txt / html) mais ca ne marche pas. Tout ce que je recoi dans outlook c'est le message en txt et dans mon webmail (qui lit que tu txt) il n'y a pas le corps du message. pouvez vous m'aider ? j'aimerais bien pouvoir gérer c'est deux format a l'envoie d'un mail.
Merci |
Anthony |
Le 30/04/2008 à 23:50 |
|
 Admin |
Salut :)
Tu peux coller ton code ici pour qu'on puisse t'aider ? (dans une balise [code=php]) -- 
|
Christobal |
Le 01/05/2008 à 09:40 |
|
|
Ni Plus Ni Moins que :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
<body>
<?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="UTF-8"'."\n";
$message .= 'Content-Transfer-Encoding: 8bit'."\n\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";
if(mail($destinataire,$sujet,$message,$headers))
{
echo 'Le mail a été envoyé';
}
else
{
echo 'Le mail n\'a pu être envoyé';
}
?>
</body>
</html>
|
Anthony |
Le 01/05/2008 à 11:26 |
|
 Admin |
Bizarre bizarre ...
Dans mon code j'avais mis un quoted-printable pour l'encodage du texte, essaie de remettre ça dans le code ;)
Sinon j'avais aussi mis un Content-transfer-encoding à 7bit au lieu de 8bit mais vu que tu prends de l'utf-8 ça devrait être bon le 8bit ... j'utilise le même code sur le site à part les différences dont je viens de te parler et ça fonctionne, donc ça ne peut venir que de là ;) -- 
|
Christobal |
Le 01/05/2008 à 21:30 |
|
|
heuuu, je ne suis pas arrivée a mettre en place le quoted-printable. le résultat et tj le même. je me suis peut être tompé,
$message .= "--".$limite."\n";
$message .= "Content-Type: text/plain\n";
$message .= 'charset="iso-8859-1"'."\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n\n";
$message .= $text;
merci |
Anthony |
Le 01/05/2008 à 21:41 |
|
 Admin |
essaie ça :
<?php
//-----------------------------------------------
//GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
//-----------------------------------------------
$frontiere = '-----=' . md5(uniqid(mt_rand()));
//-----------------------------------------------
//HEADERS DU MAIL
//-----------------------------------------------
$headers = 'From: "' . $email_reponse . '" <' . $email_reponse . '>' . "\n";
$headers .= 'Return-Path: <' . $email_reponse . '>' . "\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: 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: 7bit' . "\n\n";
$message .= $message_html . "\n\n";
$message .= '--' . $frontiere . '--' . "\n";
return mail($destinataire, $sujet, $message, $headers);
?>
sinon la balise de fermeture de code c'est [/code] ;) -- 
|