Problème d'affiche lors de l'envoi d'un mail

Invité
Invité n'ayant pas de compte PHPfrance

15 sept. 2005, 20:35

Bonsoir tout le monde,

J'ai besoin d'aide pour un simple problème d'affichage de liens dans le contenu dans mail (envoie par la fonction mail() ). Ce qu'il se passe, s'est que les liens ne sont pas correctement interprétés.

Résultat sur une boîte caramail :
"Pour valider l'inscription cliquer ici : [url]http://www.mon_site.fr[/url]>http://127.0.0.1/w
ww.mon_site.fr>www.mon_site.fr"

Résultat sur une boîte yahoo :
"Pour valider l'inscription cliquer ici : <a
href=http://127.0.0.1/www.mon_site.fr>www.mon_site.fr</a>"

Codes testés:

Code : Tout sélectionner

$url1 = "<a href=\"http://127.0.0.1/www.mon_site.fr\">www.mon_site.fr</a>";
ou

Code : Tout sélectionner

$url1 = "<a href=http://127.0.0.1/www.mon_site.fr>www.mon_site.fr</a>"; $message = "Pour valider l'inscription cliquer ici : ".$url1;
>> j'ai essayé de plusieurs façons (format texte, html, avec des " ou ') mais pas moyen ça ne s'affiche jamais correctement. Si je test sur le navigateur (sans envoie par mail), le code fonctionne... je ne comprends pas !!!

Quelqu'un aurait la solution ????

Eléphant du PHP | 417 Messages

15 sept. 2005, 20:40

---
Modifié en dernier par JazzFinder le 28 juin 2006, 19:39, modifié 1 fois.

Invité
Invité n'ayant pas de compte PHPfrance

15 sept. 2005, 20:49

Tu as juste à virer le «127.0.0.1/» pour un mail (lien) externe.
ça ne change rien au problème ! Il s'agit du lien qui n'est pas correctement interprété...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

15 sept. 2005, 20:53

pour avoir un lien directement cliquable il te faut envoyer du HTML

donc tu devais mal le faire, peut-être au niveau des en-têtes

mais tu pourra aussi avoir des problèmes d'affichage dans certains clients mails ou webmail
certains transforment aussi les url en liens automatiquement, même en format texte

don si tu veux envoyer un email HTML, montre-nous comment tu fais et on pourra t'aider

Invité
Invité n'ayant pas de compte PHPfrance

15 sept. 2005, 21:05

Voilà le test fait au format HTML :

Code : Tout sélectionner

$mail = "[email protected]"; $titre = "Validation de votre inscription sur www.mon_site.fr"; $header ="From: Webmaster www.mon_site.fr <webmaster@mon_site.fr> \n"; $header .="Reply-To: webmaster@mon_site.fr \n"; $message = ' <html> <head> <title>Validation inscription</title> </head> <body> <table> <tr> <td>Pour valider votre inscription cliquer ici :</td> <td><a href="http://127.0.0.1/www.mon_site.fr">www.mon_site.fr</a></td> </tr> </table> </body> </html> '; // envoie du mail mail($mail, $titre, $message, $header);
Résultat obtenu :

Code : Tout sélectionner

Pour valider l'inscription cliquer ici : www.mon_site.fr >http://www.mon_site.fr>www.mon_site.fr
J'ai du mal à comprendre sérieux ?? L'interprétation du webmail fonctionne car j'ai bien reçu le lien cliquable de confirmation lors de mon inscription sur ce site... :?:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

15 sept. 2005, 21:19

oui car un webmail c'est, comme son nom l'indique, un outil web qui affiche donc du HTML, et tu consultes tes mails via un navigateur
ton navigateur affiche donc les liens correctement crée

ce n'est pas pareil pour Outlook ou Thunderbird
pour leur envoyer un mail HTML, il a des en-têtes spéciaux à envoyer

fait un petit tour sur Google tu devrais vite trouver un exemple

ou va voir même dans la doc PHP de la fonction mail() il me semble qu'il y en a un : http://fr.php.net/manual/

Petit nouveau ! | 4 Messages

15 sept. 2005, 21:22

oui car un webmail c'est, comme son nom l'indique, un outil web qui affiche donc du HTML, et tu consultes tes mails via un navigateur
ton navigateur affiche donc les liens correctement crée

ce n'est pas pareil pour Outlook ou Thunderbird
pour leur envoyer un mail HTML, il a des en-têtes spéciaux à envoyer

fait un petit tour sur Google tu devrais vite trouver un exemple

ou va voir même dans la doc PHP de la fonction mail() il me semble qu'il y en a un : http://fr.php.net/manual/
Comme je disais le webmail interprète correctement les liens (je n'utilise pas de logiciel de messagerie car l'interprétation n'est pas correcte (remarque il suffit de le paramétrer) mais là n'est pas la question.
Mon code n'est pas correcte pour l'envoie au format HTML ??

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

15 sept. 2005, 21:24

j'ai bien vu, j'expliquais la différence :
ce n'est pas pareil pour Outlook ou Thunderbird
pour leur envoyer un mail HTML, il a des en-têtes spéciaux à envoyer

Petit nouveau ! | 4 Messages

15 sept. 2005, 21:28

Tu en penses quoi de mon code ??

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

15 sept. 2005, 21:35

j'en pense qu'il y a du HTML dedans mais que finalement c'est du simple texte car il manque les en-têtes dont je te parle...

tu es allé voir dans la doc de la fonction mail() ?
je suis gentil je te met le lien direct :lol:

=> http://fr2.php.net/manual/fr/function.mail.php

Petit nouveau ! | 4 Messages

15 sept. 2005, 22:30

J'ai testé plusieurs choses :
- ajout de plusieurs headers
- format texte ou html
- sur un webmail ou logiciel de messagerie
- etc...

Bizarrement, j'ai testé sans le "http://" devant les liens et là ça fonctionne... je ne comprends pas tout !!!! :roll: :?:

N'y a t-il pas un header pour le protocole http ???

Petit nouveau ! | 4 Messages

16 sept. 2005, 17:45

C'est bon ça fonctionne nickel !!! Je rentre du boulot et, je m'y remet, j'ai donc tout simplement remplacer le hearder :

Code : Tout sélectionner

'Content-type: text/plain; charset=iso-8859-1'
par :

Code : Tout sélectionner

'Content-type: text/html; charset=iso-8859-1'
>> une prise de tête pour pas grand chose... ça marche au format texte ou html quelque soit le webmail (yahoo ou caramail) et sur un logiciel de messagerie (testé sur Outlook Express)