Page 1 sur 2

pb avec fonction mail

Posté : 03 sept. 2009, 02:30
par medianeweb
Salut à tous
J'utilise la fonction mail et tout se passe relativement bien.
Je m'explique. mes mails sont bien envoyés en format html, aux bons destinataires, avec les bons contenus. Suis donc très content :D
Un hic cependant (bah oui !) : mes mails 'affichent très bien sur des logiciels de messageries tels que Outlook, Mail, Thunderbird, etc...
Par contre, dès que je cherche à les lire sur des serveur de messagerie type yahoo en me connectant depuis leur site, là, c'est le drame ! J'ai des trucs du genre
<html><body><table width='550' border='0' cellspacing='0' cellpadding='5'
style='border-color:#CC6600; border-width:1 ;border-style:solid'><tr><td
width='100%'><br><br><br><font color='#000000' size='-1' face='verdana'>Bonjour </I>BLABLABLA</font></B></tr></td></table></body></html>
En d'autres termes, vous l'aurez compris, le code html est compris comme étant du texte et n'est pas interprété...

y aurait-il une solution pour éviter ça ?

Merci de vos réponses :)

A +

Re: pb avec fonction mail

Posté : 03 sept. 2009, 07:49
par Dr@ke
C'est à cause de certains abus...
Et donc oui html et javascript sont souvent désactivés par mesure de sécurité, seule solution à mon sens, c'est de ne pas utiliser html dans les mails...
Tout en sachant que les utilisateurs peuvent toujours autoriser manuellement html dans un mail.
Donc peut-être en le présisant au début du mail...

[EDIT]
Ou plus fun peut-être:
Filtrer les adresses mails (Yahoo et hotmail...), avec une fonction preg_match() et donc envoyer soit un mail en version html soit un mail version non html...

Re: pb avec fonction mail

Posté : 03 sept. 2009, 08:39
par FuZZyLine
Salut,
Salut à tous
J'utilise la fonction mail et tout se passe relativement bien.
Je m'explique. mes mails sont bien envoyés en format html, aux bons destinataires, avec les bons contenus. Suis donc très content :D
Un hic cependant (bah oui !) : mes mails 'affichent très bien sur des logiciels de messageries tels que Outlook, Mail, Thunderbird, etc...
Par contre, dès que je cherche à les lire sur des serveur de messagerie type yahoo en me connectant depuis leur site, là, c'est le drame ! J'ai des trucs du genre
<html><body><table width='550' border='0' cellspacing='0' cellpadding='5'
style='border-color:#CC6600; border-width:1 ;border-style:solid'><tr><td
width='100%'><br><br><br><font color='#000000' size='-1' face='verdana'>Bonjour </I>BLABLABLA</font></B></tr></td></table></body></html>
En d'autres termes, vous l'aurez compris, le code html est compris comme étant du texte et n'est pas interprété...
y aurait-il une solution pour éviter ça ?
Merci de vos réponses :)
A +
As-tu bien indiqué : Content-type multipart/alternative; boundary... ?

@+ ;)

Re: pb avec fonction mail

Posté : 03 sept. 2009, 08:59
par Dr@ke
As-tu bien indiqué : Content-type multipart/alternative; boundary... ?
Effectivement, c'est déjà mieux de commencer ainsi, cela te permet d'envoyer dans un même mail, deux versions: une version html et une version texte...
Et ensuite éventuellement filtrer les adresses mails, si cela n'affiche pas le résultat voulu sur certaines messageries...

Re: pb avec fonction mail

Posté : 03 sept. 2009, 10:09
par medianeweb
Hello Dr@ke et FuZZyLine !
Merci de ces échanges... :) Non, je n'ai pas utilisé Content-type multipart/arternative;
Est-ce que vous pourriez me donner la syntaxe précise ? (bon sinon, je peux chercher, mais si vous l'avez directement en tête...)

Re: pb avec fonction mail

Posté : 03 sept. 2009, 10:19
par Dr@ke
Comme disait mon Prof: "Google est ton ami" :wink:
Ensuite Post ton code si problème...

Re: pb avec fonction mail

Posté : 03 sept. 2009, 12:45
par FuZZyLine
Hello Dr@ke et FuZZyLine !
Merci de ces échanges... :) Non, je n'ai pas utilisé Content-type multipart/arternative;
Est-ce que vous pourriez me donner la syntaxe précise ? (bon sinon, je peux chercher, mais si vous l'avez directement en tête...)
$separator = '-----=' . md5(uniqid(mt_rand())); 
Content-Type: multipart/alternative; boundary = $separator
Je te conseille la lecture de cette page: http://www.vulgarisation-informatique.com/mail.php
j'y ai fais mes classes... (J. de M.) ;)

@+ ;)

Re: pb avec fonction mail

Posté : 03 sept. 2009, 13:12
par medianeweb
ok merci les gars !
Je m'y colle cette aprèm :)
Je vous tiens au jus en cas de pb...

Re: pb avec fonction mail

Posté : 03 sept. 2009, 19:57
par medianeweb
Hello les gars
bon alors j'ai fait comme il fallait !
Mais :((
ca marche pô !

J'ai ça comme message sur le serveur :
Email Parsing failed. The selected email cannot be parsed since the email is corrupt. Please ask the sender to send the email again using another program or method. MIME message decoding error: incomplete message body part
et sur mon serveur de messagerie :
This is a multi-part message in MIME format.

-------=9af5ec8c49080de78a83ae9d2d103331--
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit



Bonjour
BLABLABLA

CECI EST UN TEST


-------=9af5ec8c49080de78a83ae9d2d103331--
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

<html><body><table width='550' border='0' cellspacing='0' cellpadding='5' style='border-color:#CC6600; border-width:1 ;border-style:solid'><tr><td width='100%'><a href='http://www.monsite.com'><IMG SRC='http://www.monsite.com/images.gif'></a> ... ><br><font color='#000000' size='-1' face='verdana'>Bonjour </I><br clear='all'><br clear='all'>BLABLABLA

CECI EST UN TEST

</font></B></tr></td></table></body></html>

-------=9af5ec8c49080de78a83ae9d2d103331--

Voilà voilà...
#-o

Re: pb avec fonction mail

Posté : 03 sept. 2009, 20:16
par Dr@ke
L'exemple sur l'adresse que Fuzzy t'a donné:
<?php
     //-----------------------------------------------
     //DECLARE LES VARIABLES
     //-----------------------------------------------

     $destinataire='[email protected]';
     $email_expediteur='[email protected]';
     $email_reply='[email protected]';

     $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="iso-8859-1"'."\n";
     $message .= 'Content-Transfer-Encoding: 8bit'."\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: 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é';
     }
?> 
Dedans les variables expéditeur et destinataire:
     $destinataire='[email protected]';
     $email_expediteur='[email protected]';
     $email_reply='[email protected]';
Dedans aussi, les variables message html et message texte:
$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>';
Remplace les par les tiennes, test et ensuite adapte avec ton script suivant l'exemple :wink:

Re: pb avec fonction mail

Posté : 03 sept. 2009, 20:56
par medianeweb
Bon... ok... je vais tenter ça !
Je pourrai pas avant demain alors je vous tiens au courant !

Re: pb avec fonction mail

Posté : 03 sept. 2009, 21:17
par medianeweb
J'ai pris 2 minutes pour tenter...
Exactement le même résultat #-o
Je peux vous envoyer le code, mais en fait, ça changerait rien, j'ai fait un "copier collé" du code que vous m'avez envoyé...
En fait j'ai envie de dire que ce code ne fonctionne pas avec tous les serveurs de messagerie...
ce qui ne m'arrange pas mes affaires !

Re: pb avec fonction mail

Posté : 03 sept. 2009, 23:19
par Dr@ke
J'en sais rien, personnellement je n'ai jamais testé: multipart/alternative; boundary et encore moins le script de l'adresse donné... Et je n'ai pas le temps de tester pour le moment.
Fuzzy semblait dire que cela fonctionnait, il va surement te répondre...
Sinon te reste la solution que j'évoquais dans mon premier Post.

Re: pb avec fonction mail

Posté : 04 sept. 2009, 09:01
par FuZZyLine
Salut,
J'ai pris 2 minutes pour tenter...
Exactement le même résultat #-o
Je peux vous envoyer le code, mais en fait, ça changerait rien, j'ai fait un "copier collé" du code que vous m'avez envoyé...
En fait j'ai envie de dire que ce code ne fonctionne pas avec tous les serveurs de messagerie...
ce qui ne m'arrange pas mes affaires !
L'url donnée te permet de faire tout ce que tu souhaites faire (en tout cas dans ton premier message).
Ce peut que "2" minutes n'ont pas été suffisantes. 'fin... pour moi c'était pas le cas.
Autrement, si tu ne fais que du copié/colller sans apréhender le mécanisme, je ne peux t'aider plus.
Regarde bien, lis, apréhende le sujet. Assimiler le sujet passe souvent par des essais foireux...
(je sais de quoi je parle).

Ceci dit, sans offense, c'est ma façon de voir. Je pourrais encore (tenter) de t'aider mais sur un
problème précis, une demande explicite. La, ca devient trop large. A ta question primaire, je pense avoir
répondu... Même si d'autres zones d'ombres apparaissent.

Quelque points à prendre en considération: (simple rappel)

Ne pas confondre \n et \r\n
S'assurer que les doubles "\n" sont bien présents et que ceux-ci sont bien placés.
S'arrurer d'un code de caractère convenable (7bts vs 8Bits, etc...)

Essaie l'envoie de ton mail avec juste, dans la partie body-html un espace et c'est tout,
c'est peut-être juste ton message qu'il n'aime pas.

Voila, désolé ne pas en dire plus mais c'est tout ce que je peux à l'heure présente.

@+ bon code ;)

EDIT: J'ai peut-être été un peu sec lol désolé. Petite info en sus. Tu as la lib phpmailer qui existe et
facilite grandement la vie: http://phpmailer.worxware.com/ au cas ou, on sait jamais ;)

Re: pb avec fonction mail

Posté : 04 sept. 2009, 13:08
par medianeweb
Hello FuZZyLine
T'inquiète pas. No problem ! J'étais un peu désespéré hier parce que je suis assez laborieux en programmation, et du coup ce qui devrait prendre 15 minutes me prend souvent 1 heure et là ça fait 15 jours que je cherche à améliorer certaines fonctionnalités de mon site et je dois avouer que, à cette dernière étape de la programmation, j'ai hâte de voir la ligne d'arrivée !
Mais bon... je resterai tenace...
L'url donnée te permet de faire tout ce que tu souhaites faire
C'est bien ça qui me rassure.

Je vais y aller par étape et voir ce qui se passe...

Je te tiens au courant

a +