Les serveurs SMTP n'ont pas toujours été capables de transmettre tous les types de texte. A la base, ils n'ont été prévus que pour transmettre les caractères anglophones, ce qui est très limité !
Les codages de caractères
Citation : WikipédiaUn codage de caractères est un code qui associe un jeu de caractères d'une langue naturelle (comme un alphabet) avec un jeu de quelque chose d'autre, comme des nombres ou des signaux électriques.
Je vais essayer de vous expliquer à ma façon : un ordinateur ne comprend à la base que le binaire, c'est à dire des suites de 0 et de 1...
Mais alors, avec les lettres, les chiffres, les symboles, le chinois..., comment fait-il ?
En réalité, le binaire reste derrière tout cela !
Explication : prenons l'exemple de l'octet. Un octet est composé de 8 bits, c'est à dire d'une série de 8 chiffres en binaire.
Ce qui permet d'avoir 2
8 =
256 combinaisons !
Exemple : 00000000 => 0 ; 00000001 => 1 ; 00000010 => 2 ; 00000011 => 3 ; 01100100 => 100 ; 11111111 = 255.
A présent, nous pouvons convenir par exemple que :
01000001 (binaire) => 65 (décimal) =>
A ; 01000010 (binaire) => 66 (décimal) =>
B, etc.
C'est cela la notion d'encodage : décider que telle valeur est égale à tel caractère !
Le problème du codage ASCII
Table ASCII (cliquez pour agrandir)

Le codage
ASCII date de 1961 et reste le plus répandu dans le monde de l'informatique. Internet ne fait pas exception à la règle...
Le problème est que le codage ASCII est vraiment très limité (7 bits, soit 2
6 =
128 combinaisons).
Ce codage donc, suffisant pour les caractères anglais, ne l'est plus du tout si l'on veut utiliser des caractères accentués, etc.
En conclusion, avec les anciens serveurs SMTP, seuls les caractères codés en
ASCII pouvaient être transmis correctement.
Pour faire passer des messages plus diversifiés, il a fallu ruser un peu...
Les serveurs ESMTP, plus récents, possèdent une extension leur permettant de transmettre du texte en 8 bits.
Il fallait en fait encoder le texte dans un autre codage, permettant de passer les caractères complexes divers en
ASCII (et non en binaire, vous suivez ?...), puis le décoder à l'arrivée.
Bon, allez, je vois que vous êtes perdus, je vous fais un petit schéma :
Plusieurs types d'encodages existent. Les plus utilisés pour le transfert de courrier sont le
Quoted-Printable (7 bits) et le
Base64 (6 bits).
Chaque partie du mail (texte, pièce jointe, etc.) peut être encodée différemment, selon le codage le plus adapté.
C'est tout ?
En réalité, il nous reste encore un problème !
Les différents systèmes d'exploitation (ainsi que les logiciels...) ne sont pas toujours d'accord sur l'encodage 8 bits à employer pour le texte. Il y a ainsi les codages
ISO-8859-1,
Windows-1252...
Et c'est pire si vous utilisez des caractères complexes, auquel cas vous utiliserez des codages exotiques comme le
UTF-8 (européen), le
Shift-JIS (japonais), ou le
Big5 (chinois)...
Conclusion : il ne suffit plus d'encoder le texte différemment, il faut aussi retenir l'encodage de base utilisé pour que le texte puisse être décodé sans problème !
Mais alors comment faire avec tout ce bordel !?
Solution : Multipurpose Internet Mail Extension
Pour faire de l'ordre dans tout cela, a été créé le
MIME.
Citation : WikipédiaMultipurpose Internet Mail Extensions (MIME) est un standard internet qui étend le format de données des courriels pour supporter des textes en différents codages de caractères autres que l'ASCII, des contenus non textuels, des contenus multiples, et des informations d'en-tête en d'autres codages que l'ASCII.
Je crois que pour mieux appréhender le MIME, rien ne vaut la pratique !
Nous allons maintenant analyser un message avec une pièce jointe...