Page 1 sur 1

problème d'envoi email text et html

Posté : 30 nov. 2005, 15:23
par rom
Bonjour, j'ai fait de longue recherches (sans aucun résultat) pour trouver une fonction qui permet d'afficher une ligne de texte du genre "si cet email ne s'affiche pas correctement, copiez/collez le lien ci-dessous dans votre navigateur" et qui permet aux gens qui n'ont pas de messagerie compatible avec la réception d'email html en php d'afficher quand même un texte d'avertissement. L'un d'entre vous saurait-il comment faire ?

J'uilise une fonction simple d'envoi qui est celle-là :
<?
$destinataire = "[email protected]";
$expediteur = "[email protected]";
$objet = "test";
$contenu = '<html><body>'.
'<h1>Test Email</h1>'.
'<span class="gras"><u>Ceci est un document HTML</u></span><br />'.
'Avec différentes tailles de caractères et <font color="red">couleurs'.
'</body></html>';


mail($destinataire, $objet, $contenu, "From: $expediteur\r\nReply-To: $expediteur\r\nContent-Type: text/html; charset=\"iso-8859-1\"\r\n");
?>
Merci d'avance !!!

Posté : 30 nov. 2005, 16:04
par pitt
Tu veux une fonction qui vas vérifier si la messagerie est compatible?

Sinon tu ajoutes ton lien dans le corps de ton mail

Posté : 30 nov. 2005, 17:00
par rom
je ne sais pas à vrai dire, je sais qu'un jour j'avais vu une fonction très simple qui s'ajoute au script PHP et qui permet en cas de non-compatibilité d'afficher des informations juste en texte pour les utilisateurs...merci de ta réponse au fait !

Posté : 30 nov. 2005, 17:49
par Invité
personne pour m'aider :( ?

Posté : 30 nov. 2005, 20:07
par DarkBlue
Je pense que tu devrais mettre la ligne dans tout tes mails comme ça compatibilité ou pas tout le monde sait ou retrouver le contenu du mail sur le net ( pratique quand on efface un mail sans faire expres)

Posté : 01 déc. 2005, 12:32
par Invité
justement, je ne sais pas comment insérer le code dans mon script qui va dire au logiciel de messagerie d'afficher une ligne en texte si il n'est pas compatible avec du HTML. Quelqu'un a une idée ?

Posté : 02 déc. 2005, 12:41
par Invité
bon ben, je vais essayer sur un autre forum, je tente encore une fois, si quelqu'un passe par là... :)

Posté : 02 déc. 2005, 20:04
par Nico128
ah oui jai dja vu sa mais je peux pas t'aider....

sur les forumactif par example, ca vérifie l'adresse email que ta mise, et si elle n'existe pas 4a le dit !

Posté : 06 déc. 2005, 12:06
par rom
personne ne peut m'aider alors ? please help !!!!

Posté : 06 déc. 2005, 13:55
par pjl
tu fais une remarque en HTML au début de ton mail.
Ainsi si c'est du HTML, ca ne se voit pas, si 'est du texte, le lien est visible.

Posté : 07 déc. 2005, 20:17
par hhgroove
Salut, pour envoyer un mail en HTML qui s'adapte en texte à la boite mail du destinataire si elle ne prend pas en charge l'HTML tu dois envoyer ton corps de message dans les deux formats avec en premier le format HTML.

Pour cela tu dois utliser une boundary (une frontiére) entre chaque partie de ton message. Et aussi, il faut que ces différentes parties possédent un Content-Type pour spécifier s'il s'agit d'html ou de texte.

je te file un bout de code pour que tu comprenne mieux :

//-----------------------------------------------
//DECLARE LES VARIABLES
//-----------------------------------------------

//On déclare la frontiére, je sai pas tro pourquoi mais il faut l'encoder comme ça
$frontiere = '-----=' . md5(uniqid(mt_rand()));

$mail='adresse mail de ton destinataire';

$email_expediteur='ce que tu veu qu\'il apparaisse';
$email_reply='ce que tu veu qu\'il apparaisse pour la reponse';

$message_texte='Bonjour';

$message_html='<html>
<head>
<title>TITRE</title>
</head>
<body>
Ton message
</body>
</html>';

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

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

//-----------------------------------------------
//MESSAGE HTML
//-----------------------------------------------

$message = "This is a multi-part message in MIME format.\r\n";

//utilisation de la frontiere entre chaque partie
$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 .= "\n\n";

//-----------------------------------------------
//MESSAGE TEXTE 
//-----------------------------------------------

$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 .= "\n\n";

//pour finir tu ecrit la frontiere com ca
$message .= "--" . $frontiere . "--\n";

mail($mail,$sujet,$message,$headers);
Je te file ce lien clique ici y à un bon tutorial si tu veux plus approfondir la question par exemple en mettant des fichiers joints et tout...

Bonne continuation...