problème d'envoi email text et html

rom
Invité n'ayant pas de compte PHPfrance

30 nov. 2005, 15:23

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 !!!

Eléphant du PHP | 153 Messages

30 nov. 2005, 16:04

Tu veux une fonction qui vas vérifier si la messagerie est compatible?

Sinon tu ajoutes ton lien dans le corps de ton mail

rom
Invité n'ayant pas de compte PHPfrance

30 nov. 2005, 17:00

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 !

Invité
Invité n'ayant pas de compte PHPfrance

30 nov. 2005, 17:49

personne pour m'aider :( ?

Eléphant du PHP | 440 Messages

30 nov. 2005, 20:07

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)
C'est en faisant des erreurs et en osant demander de l'aide qu'on apprend ! Il n'est pas ridicule de ne pas savoir !

Invité
Invité n'ayant pas de compte PHPfrance

01 déc. 2005, 12:32

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 ?

Invité
Invité n'ayant pas de compte PHPfrance

02 déc. 2005, 12:41

bon ben, je vais essayer sur un autre forum, je tente encore une fois, si quelqu'un passe par là... :)

Eléphant du PHP | 246 Messages

02 déc. 2005, 20:04

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 !

rom
Invité n'ayant pas de compte PHPfrance

06 déc. 2005, 12:06

personne ne peut m'aider alors ? please help !!!!

ViPHP
pjl
ViPHP | 2119 Messages

06 déc. 2005, 13:55

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.

Petit nouveau ! | 3 Messages

07 déc. 2005, 20:17

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...