OVH Community, votre nouvel espace communautaire.

mail(), contenu du mail passé en pièce jointe


Abogil
19/02/2007, 19h23
Envoie moi un mail. Je te le qualifirai.

VaN
19/02/2007, 19h16
Bon je pense avoir résolu plus ou moins mon problème. En tout cas en ce qui concerne le Webmail d'OVH :

J'ai passé le mail en text/plain, et enlevé le html (j'ai remplacé les
par des \n, enlevé les codages de caractères accentués et supprimer le a href>).

le Webmail d'OVH genère lui-meme un lorsqu'il detecte une url, meme si le mail et en format text/plain, donc c'est nickel.

J'ai juste à demander à mes clients de vérifier que cela fonctionne également sous Outlook Express.

VaN
19/02/2007, 19h03
Citation Envoyé par Homer Jay
Dans ton cas de test, où tu envoies juste «Bonjour !», est-ce que ça marche mieux quand tu mets le type «text/plain»?
Oh magie ! alors là effectivement, le contenu du msg s'affiche ds le mail, et non plus en piece jointe.

Outlook Express et le Webmail d'OVH ne sont pas friands des mails html ?

Par contre, je viens de modifier mon entête comme suggéré par crole, et en remetant text/html, là le bug re-apparait :

Code HTML:
$entete = "MIME-Version: 1.0\n";
			$entete .= "Content-type: text/html; charset=iso-8859-1\n";
			$entete .= "Content-Disposition: inline\n";
			$entete .= "From: $from\n";

Homer Jay
19/02/2007, 18h55
Citation Envoyé par VaN
Et comment faire pour pouvoir envoyer mon mail également en format text ?
Il faut faire deux parties MIME, une au format text/plain et une au format text/html. Il y a un court exemple dans l'article Wikipedia:
http://en.wikipedia.org/wiki/MIME (dans «Multipart Messages»).

Les clients capables de lire le HTML privilégieront la version HTML, les autres liront le contenu texte.

Comment faire pour savoir si je dois envoyer un mail html ou un mail text sur tel ou tel utilisateur ?
Il faut demander à l'utilisateur... En général, un bon compromis est de mettre HTML par défaut, puis de permettre le changement de la préférence par la suite. Ou bien, pour tes futurs utilisateurs, demande la préférence pendant le processus d'inscription.

Homer Jay
19/02/2007, 18h50
Citation Envoyé par VaN
J'imagine que tu parles de ça ?

Code:
Return-Path: 
(...)
MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1
(...)
X-Spam-Check: DONE|H 0.5/N



Bonjour !
Merci, c'est exactement ce que je voulais voir. Il me semble que tout a été reçu correctement, et je ne vois pas de problème particulier: il y a bien une ligne vide entre les en-têtes et le corps, et rien de supect. Dans ton cas de test, où tu envoies juste «Bonjour !», est-ce que ça marche mieux quand tu mets le type «text/plain»?

Ou bien pourrais-tu essayer d'ajouter un en-tête «Content-Disposition: inline»? Je suppose que tu t'es débarrassé des "\r\n", comme l'a suggéré crole.

VaN
19/02/2007, 18h44
je viens de remplacer les \r\n par des \n, aucun changement, le bug est toujours la.

Et comment faire pour pouvoir envoyer mon mail également en format text ?

Comment faire pour savoir si je dois envoyer un mail html ou un mail text sur tel ou tel utilisateur ?

crole
19/02/2007, 18h38
Citation Envoyé par Homer Jay
... je suis assez certain qu'il est incorrect d'avoir un corps uniquement en HTML sans être sous forme d'attachement MIME. Si tu tiens au HTML, il faudrait créer deux parties MIME, dont une reproduit le contenu au format texte.
Je ne sais pas si c'est "correct" du point de vue normalisation mais je me sert de cette méthode (sans mime part) pour envoyer juste du html et ça ne pose pas de souci.
Mais je me sert de \n comme retour de ligne des headers et ma partie html contient toutes les partie d'une page html conventionnelles (doctype, html, head, body) et leurs fermeture.
Peut être que ça joue un rôle aussi.

VaN
19/02/2007, 18h28
ok désolé.

J'imagine que tu parles de ça ?

Code HTML:
Return-Path: 
Delivered-To: davidm@b
Received: from b0.ovh.net (HELO queue) (213.186.33.50)
	by b0.ovh.net with SMTP; 19 Feb 2007 17:06:59 -0000
Received: from 9.mail-out.ovh.net (213.186.35.219)
  by mx1.ovh.net with SMTP; 19 Feb 2007 17:06:58 -0000
Received: (qmail 20133 invoked by uid 0); 19 Feb 2007 17:07:05 -0000
Received: from gw1.ovh.net (HELO 240plan.ovh.net) (213.251.189.201)
  by 9.mail-out.ovh.net with SMTP; 19 Feb 2007 17:07:04 -0000
Received: by 240plan.ovh.net (Postfix, from userid 5626)
	id 40A073E188; Mon, 19 Feb 2007 18:06:59 +0100 (CET)
To: davidm@domain.fr
Subject: domain account activation
MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1
From: no-reply@domain.com
Message-Id: <20070219170659.40A073E188@240plan.ovh.net>
Date: Mon, 19 Feb 2007 18:06:59 +0100 (CET)
X-Ovh-Remote: 213.186.35.219 (9.mail-out.ovh.net)
X-Ovh-Local: 213.186.33.29 (mx1.ovh.net)
X-Spam-Check: DONE|H 0.5/N



Bonjour !

Homer Jay
19/02/2007, 18h23
Citation Envoyé par VaN
Voici la source du mail en lui-meme (une partie, le forum OVH n'accepte pas les posts de plus de 10000 caractères)
Je voulais dire le vrai source de l'e-mail tel qu'il est reçu, avec les en-têtes (au moins la fin) et le début du corps (la première ligne du corps suffit largement). Il doit y avoir une option du genre «afficher le message brut» dans le webmail, ou «source du message» dans Outlook. Le but est de voir si la séparation en-têtes/corps est bien faite!

Sinon (ce n'est sans doute pas la cause de ton problème), je suis assez certain qu'il est incorrect d'avoir un corps uniquement en HTML sans être sous forme d'attachement MIME. Si tu tiens au HTML, il faudrait créer deux parties MIME, dont une reproduit le contenu au format texte.

VaN
19/02/2007, 18h13
Voici la source du mail en lui-meme (une partie, le forum OVH n'accepte pas les posts de plus de 10000 caractères) :

Code HTML:
"0" align="center" width="100%" cellpadding="2" cellspacing="0">
"item0" align="right" valign="top">Date:  "item0" width="100%">Mon, 19 Feb 2007 18:06:59 +0100 (CET)
"item1" align="right" valign="top">De:  "item1" width="100%">"javascript:open_compose_win('popup=1&to=no-reply%40domain.com&cc=&bcc=&msg=&subject=&thismailbox=INBOX');" onmouseout="window.status='';" onmouseover="window.status='Rédaction de message (no-reply@domain.com)'; return true;">no-reply@domain.com
"item0" align="right" valign="top">À:  "item0" width="100%">"javascript:open_compose_win('popup=1&to=davidm%40domain.fr&cc=&bcc=&msg=&subject=&thismailbox=INBOX');" onmouseout="window.status='';" onmouseover="window.status='Rédaction de message (davidm@domain.fr)'; return true;">davidm@domain.fr
"item1" align="right" valign="top">Objet:  "item1" width="100%">domain account activation
"item0" align="right" valign="top">Partie(s):  "item0" width="100%">"2" cellpadding="1">"middle">
"/horde/imp/graphics/mime/html.gif" height="16" width="16" border="0" alt="" />1"" onclick="view('113', '1', '2eb0c1281d5c3a0edc7a82c2a60a88c3'); return false;" onmouseout="window.status='';" onmouseover="window.status='Voir unnamed'; return true;">unnamedtext/html0.01 KB"/horde/imp/download/?mime=2eb0c1281d5c3a0edc7a82c2a60a88c3&actionID=112&id=1&index=6&thismailbox=INBOX&fn=/unnamed" onmouseout="window.status='';" onmouseover="window.status='Télécharger unnamed'; return true;">"/horde/imp/graphics/download.gif" border="0" alt="Téléchargement" title="Téléchargement" />
"0" align="center" width="100%" cellspacing="0" cellpadding="0">
"control" align="center"> "0" align="center" width="100%" cellpadding="2" cellspacing="3">
"text"> 
"0" align="center" width="100%" cellspacing="0" cellpadding="2">"control">
"left"> "/horde/imp/mailbox.php?indices=6&start=2&actionID=101" onmouseout="window.status='';" onmouseover="window.status='Supprimer'; return true;" class="widget">Supprimer | "javascript:open_compose_win('popup=1&to=&cc=&bcc=&msg=&subject=&actionID=106&index=6&bodypart=1&identity=0&thismailbox=INBOX');" onmouseout="window.status='';" onmouseover="window.status='Répondre'; return true;" class="widget">Répondre | "javascript:open_compose_win('popup=1&to=&cc=&bcc=&msg=&subject=&actionID=107&index=6&bodypart=1&identity=0&thismailbox=INBOX');" onmouseout="window.status='';" onmouseover="window.status='Répondre à tous'; return true;" class="widget">Répondre à tous | "javascript:open_compose_win('popup=1&to=&cc=&bcc=&msg=&subject=&actionID=108&index=6&bodypart=1&identity=0&thismailbox=INBOX');" onmouseout="window.status='';" onmouseover="window.status='Transfert'; return true;" class="widget">Transfert | "javascript:open_compose_win('popup=1&to=&cc=&bcc=&msg=&subject=&actionID=120&index=6&thismailbox=INBOX');" onmouseout="window.status='';" onmouseover="window.status='Rediriger'; return true;" class="widget">Rediriger | "/horde/imp/mailbox.php?indices=6&start=2&actionID=158" onmouseout="window.status='';" onmouseover="window.status='Liste noire'; return true;" class="widget">Liste noire | "" onclick="view('115', '0', ''); return false;" onmouseout="window.status='';" onmouseover="window.status='Source du message'; return true;" class="widget">Source du message | "/horde/imp/download/?thismailbox=INBOX&start=2&index=6&actionID=116&fn=/domain%20account%20activation" onmouseout="window.status='';" onmouseover="window.status='Enregistrer sous'; return true;" class="widget">Enregistrer sous | "" onclick="open_print_win('actionID=148&mailbox=INBOX&bodypart=1&index=6&thismailbox=INBOX'); return false;" onmouseout="window.status='';" onmouseover="window.status='Imprimer'; return true;" class="widget">Imprimer "right"> "mailbox.php?start=2" onmouseout="window.status='';" onmouseover="window.status='Revenir à INBOX'; return true;" class="widget">Revenir à INBOX   "mailbox.php?start=2" rel="Up" /> "message.php?index=5" onmouseout="window.status='';" onmouseover="window.status='Message précédent'; return true;" class="widget">"/horde/imp/graphics/prev.gif" border="0" alt="Message précédent" width="12" height="13" title="Message précédent" /> "message.php?index=5" rel="Previous" /> "/horde/imp/graphics/next-grey.gif" border="0" width="12" height="13" alt="" />
"0" cellpadding="0" cellspacing="0" align="center" width="100%">
"right" class="smallheader"> "menuitem" href="" onclick="Transfer(103, 2); return false;">Déplacer | "menuitem" href="" onclick="Transfer(104, 2); return false;">Copier
et voici la source de la pièce jointe :
Code HTML:
Bonjour !
A la reception du mail, l'entête affiche :
Partie(s):
1 unnamed text/html 0.01 KB Téléchargement

Homer Jay
19/02/2007, 17h33
Citation Envoyé par VaN
Le contenu du mail est en fait tranféré dans une pièece jointe, au lieu d'apparaitre dans le corps du messsage.
Peux-tu nous montrer aussi le source du message tel qu'il est reçu?

crole
19/02/2007, 17h08
Bonjour,
essaies de terminer les lignes d'entêtes par \n pour le fonction mail() à la place de \r\n qui est normalement utilisé pour le smtp.

VaN
19/02/2007, 16h45
Bonjour,

j'herberge actuellement un site sur OVH (serveur 240plan) sur lequel j'utilise la fonction mail().

Lors de la recéption du mail, un bug apparait sur certains clients mail. Le bug est apparu pour le moment sur le webmail d'OVH et sous outlook express. Le contenu du mail est en fait tranféré dans une pièece jointe, au lieu d'apparaitre dans le corps du messsage.

Voici le script du mail, qui pourtant ne me semble pas erroné :

Code PHP:
// Envoi du mail d'activation
            
$from "sender@domain.com";
            
$to $_POST['mail'];
            
$sujet "account activation";
            
            
//Message :
            
if(isset($_COOKIE['lang']) && $_COOKIE['lang'] == 'en')
            {
                
$message "Hello !";
            }
            else
            {
                
$message "Bonjour !";
            }
            
            
// Envoi du mail
            
            
$entete "MIME-Version: 1.0\r\n";
            
$entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
            
$entete .= "From: $from\r\n";
            if(!
mail($to$sujet$message$entete))
                echo 
''.$lang_mail_error.'';
            else
                echo 
$lang_registered.''
Le contenu du mail a été simplifié, en enlevant l'HTML, mais le bug apparait toujours.

Quelqu'un aurait-il une suggestion ?