OVH Community, votre nouvel espace communautaire.

Mails multipart Mime traités différemment suivant les messageries


desaunay
27/04/2014, 16h13
Bon, après quelques essais, et tentative de bien lire la RFC:
a) ISO8859 ou UTF-8: pas d'autre effet que de déformer l'affichage des caractères accentués avec les mails Orange. Je pense que c'est normal, car tous mes textes sont en ISO8859 au départ. D'après la RFC: licite
b) 7-bit: la RFC indique que c'est le codage recommandé. J'ai quand même essayé 8bits et quoted-printable, et ça n'a rien donné. Je dois dire que j'ai essayé avec les textes en l'état. En effet, sur le serveur OVH utilisé, la fonction imap_8bit n'est pas reconnue/active..
c) J'ai tout remis simple avec seulement le texte/html. Pas mieux.

Bon, il me reste un dernier essai, cad virer la feuille de style (qui sait?) et après je reprends complètement avec un autre concept.

Cordialement

Patrick

desaunay
27/04/2014, 15h29
Question relative au multipart: en fait la version des mails jointe hier correspondait à une tentative nocturne et désespérée., basée sur un code d'un mail reçu.
J'ai mis deux codes en php dans mon message. Le deuxième ne génère pas d'espace pour le mode texte, et ça bugge pareil.
Ceci dit, j'en retiens une chose: je mets des multipart/machin sans savoir ce que machin veut dire. Je bosse le truc.

Concernant le codage 8 bits, je vais regarder.

Cordialement

Patrick

am63
27/04/2014, 13h17
Euh je vois aussi dans les exemples multipart/mixed mais jamais de partie correspondante (avec la pièce jointe). C'est un oubli de copier coller dans ce forum j'espère ? Car sinon d'un point de vue technique c'est une erreur

am63
27/04/2014, 11h42
Premier jet (car lecture rapide pour cause de départ à déjeuner) :
- si tu as (cf exemples) une partie text/html et une partie text/plain dans un message, il faut leur fournir un contenu pour les DEUX. D'après le code fourni, ta partie text/plain est vide. Mais dans ce cas, pourquoi la mettre dans le message ? Ne fournis dans ce cas qu'une partie text/html (et adieu le multipart/alternative). La raison est que de nombreux filtres anti-spam (et pq pas messageries) trouveront suspect de ne pas avoir un contenu équivalent (hormis le formatage) dans les deux parties (plain et html).

- ensuite niveau encodage des caractères. Es-tu sûr de vouloir encoder en 7bits ? Cela impose d'encoder certains caractères (et visiblement, tu balances $htmlmessage direct). D'autre part, tu utilises l'encodage isoxxxx. Ok, mais es-tu sûr que php utilise aussi le même encodage en interne (mb_internal_encoding) ? sinon les caractères accentués seront tous pourris...


Dans la mesure où depuis plus d'un an j'utilise ma propre librairie équivalente à la tienne sans avoir de problèmes (clients mail et messageries web), cela ne peut venir que d'un problème de codage ou respect des normes. Perso, j'utilise plutôt les en-tetes suivants :

Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

L'encodage est QP, c'est à dire que les codes caractères ASCII au-delà de 127 (je simplifie) sont encodés (et c'est le cas pour l'unicode utf8). Je fais cette fonction pour définir le contenu de la partie text/html :
trim(str_replace("=0A", "\n", str_replace("=0D", "\r", imap_8bit($html))))

J'avais essayé 8bits à un moment, mais ça avait merdé je sais plus pq....

- à la fin du header, je fais 2 sauts de lignes. Perso, j'ai mis \r ET \n. J'ai dû lire qq part que c'est + compatible, je pense dans la RFC.


Qq liens, dont le premier traite de l'utf8
http://bitprison.net/php_mail_utf-8_subject_and_message
http://www.phpeveryday.com/articles/...mail-P113.html

desaunay
27/04/2014, 11h16
Bonjour,

Voici un exemple de code php:
$headers = 'From: "' . $sender_name . '" <'.$sender_email.">\n";
$headers .= 'Return-Path: '.$reply_email."\n";
$headers .= 'Content-Type: multipart/mixed;';
$headers .= 'boundary = "'.$boundary.'"'."\n";
$headers .= 'MIME-Version: 1.0'."\n";

//-----------------------------------------------
// HTML MESSAGE
//-----------------------------------------------
//$message = 'This is a multi-part message in MIME format.'."\n";
$message = '--'.$boundary."\n";
$message .= 'Content-Type: multipart/alternative;'."\r\n";
$message .= ' '."\n";
$message .= '--'.$boundary."\n";
$message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n";
$message .= 'Content-Transfer-Encoding: quoted-printable'."\r\n";
$message .= ' '."\n";

$message .= '--'.$boundary."\n";
$message .= 'Content-Type: text/html; charset = "iso-8859-1"'."\n";
$message .= 'Content-Transfer-Encoding: 7bit'."\n\n";
$message .= ' '."\n";
$message .= $html_message."\n\n";
$message .= '--'.$boundary."\n";
et un autre exemple:
$headers = 'From: "' . $sender_name . '" <'.$sender_email.">\n";
$headers .= 'Return-Path: '.$reply_email."\n";
$headers .= 'MIME-Version: 1.0'."\n";
$headers .= 'Content-Type: multipart/related; boundary = "'.$boundary.'"';

//-----------------------------------------------
// HTML MESSAGE
//-----------------------------------------------
$message = 'This is a multi-part message in MIME format.'."\n";
$message .= '--'.$boundary."\n";
$message .= 'Content-Type: text/html; charset = "iso-8859-1"'."\n";
$message .= 'Content-Transfer-Encoding: 7bit'."\n\n";
$message .= ' '."\n";
$message .= $html_message."\n\n";
$message .= '--'.$boundary."\n";
Concernant le premier, ça donne ça via Orange (et affichage convenable)
From - Sun Apr 27 12:04:21 2014
X-Account-Key: account1
X-UIDL: 1074119727.95376
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
X-Mozilla-Keys:
Return-Path:
Received: from mwinf5d18 (mwinf5c18 [10.223.111.68])
by mwinb1h03 with LMTPA;
Sun, 27 Apr 2014 12:04:12 +0200
X-Sieve: CMU Sieve 2.3
Received: from PATRICK ([86.214.214.247])
by mwinf5d18 with ME
id uy4B1n0055LqERS03y4BTd; Sun, 27 Apr 2014 12:04:12 +0200
X-bcc: patrick.desaunay@wanadoo.fr
X-me-spamcause: (0)(0000)gggruggvucftvghtrhhoucdtuddrfeejvddrvddvg defudcutefuodetggcurfhrohhfihhlvgemucfogfenuceurgh ilhhouhhtmecugedttdenucenucfhrhhomhepfdhfvggvuggsr ggtkhesuggrnhgvshdrfhhrfdcuoehfvggvuggsrggtkhesugg rnhgvshdrfhhrqeenucfjughrpeffuffvhfgtggesmhdttdert ddtud
X-me-spamlevel: not-spam
X-ME-bounce-domain: wanadoo.fr
X-ME-Helo: PATRICK
X-ME-Date: Sun, 27 Apr 2014 12:04:12 +0200
X-ME-IP: 86.214.214.247
X-ME-Entity: ofr
Message-ID: <70097b6be7260503104c5aef06f8f6ad@mwinf5d18.me-wanadoo.net>
Date: Sun, 27 Apr 2014 12:04:11 +0200
Subject: Voici le résumé de votre test de [Géographie] La France (démo) chez DANES
To: patrick.desaunay@wanadoo.fr
X-PHP-Originating-Script: 0:mail_function.php
From: "feedback@danes.fr"
Content-Type: multipart/mixed;boundary = "c1cac45508208e863478d10774bd1412"
MIME-Version: 1.0

--c1cac45508208e863478d10774bd1412
Content-Type: multipart/alternative;

--c1cac45508208e863478d10774bd1412
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

--c1cac45508208e863478d10774bd1412
Content-Type: text/html; charset = "iso-8859-1"
Content-Transfer-Encoding: 7bit