Format d'un courrier électronique
Format utilisé par Up ! Mail Service
Un courrier électronique est constitué de :
- Un en-tête.
Encodé au format texte Ascii composé de lignes.
- Un séparateur.
Une ligne vide.
- Un corps.
Encodé au format texte ou binaire selon la définition posée dans l'en-tête.
En-tête d'un courrier électronique
Une ligne de l'en-tête d'un courrier électronique se compose d'une ou plusieurs lignes physiques d'au plus 70 caractères.
La première ligne physique commence par une commande suivie du caractère deux-points :. Les autres lignes commencent par un séparateur qui est soit un espace ou une tabulation \t.
Les commandes sont les suivantes :
- Bcc.
Destinataires en copie cachée. Le paramètre est une liste des adresses des destinaires.
- Cc.
Destinataires en copie non cachée. Le paramètre est une liste des adresses des destinaires.
- Comments.
Commentaire. Le reste de la ligne est le contenu du commentaire.
- Date.
Date d'envoi du courrier électronique. Son format est :
- Optionnellement, l'abréviation du jour dans la semaine suivi du caractère virgule , .
Mon, Tue, Wed, Thu, Fri, Sat et Sun. - Le numéro du jour dans le mois.
Entre 1 et 31. - L'abréviation du mois.
Jan, Fev, Mar, Avr, May, Jun, Jul, Aug, Sep, Oct, Nov et Dec. - L'année, suivie du caractère espace.
Sur quatre chiffres. - Les heures suivies du caractère deux-points : .
- Les minutes suivies.
- Optionnellement, les secondes suivis précédées du caractère deux-points : .
- Le code du fuseau horaire.
Voici un exemple : Sun, 1 Jan 2006 18:52:32 GMT
.
- Encrypted.
Code de cryptage du corps du courrier électronique. Les paramètres sont deux mots.
- From.
Emetteur. Le paramètre est la liste des adresses des émetteurs.
- In-Reply-To.
Emetteur du courrier initial pour lequel ce courrier électronique est la réponse. Le paramètre est une liste d'identifiants ou de mots libres.
- Keywords.
Mots-clé catégorisant le courrier électronique. Le paramètre est une liste de mots libres.
- Message-ID.
Identifiant du courrier électronique. Le paramètre est l'identifiant du message.
- Received.
Chemin de routage du message. Les paramètres sont :
- by.
Hôte de destination. Le paramètre est une adresse. - for.
Hôte de départ. Le paramètre est une adresse non transformée. - from.
Hôte de départ. Le paramètre est une adresse. - id.
Identifiant du courrier électronique. Le paramètre est l'identifiant du courrier. - via.
Noeud intermédiaire. Le paramètre est un chemin de routage. - with.
Protocole utilisé. Le paramètre est le mot-clé du protocole.
- References.
Références du courrier électronique quand il est lié à d'autres. Le paramètre est une liste d'identifiants ou de mots libres.
- Reply-To.
Destinataire de la réponse du courrier électronique. Le paramètre est une liste d'adresses.
- Resent-Bcc.
Destinataires en copie cachée avant le transfert du courrier électronique. Le paramètre est une liste d'adresses des destinaires.
- Resent-Cc.
Destinataires en copie non cachée avant le transfert du courrier électronique. Le paramètre est une liste d'adresses des destinaires.
- Resent-Date.
Date d'envoi du courrier électronique avant son transfert. Son format est identique à celui de Date.
- Resent-From.
Emetteur avant le transfert du courrier électronique. Le paramètre est la liste des adresses des émetteurs.
- Resent-Message-ID.
Identifiant du courrier électronique avant son transfert. Le paramètre est l'identifiant du message.
- Resent-Reply-To.
Destinataire de la réponse avant le transfert du courrier électronique. Le paramètre est une liste d'adresses.
- Resent-Sender.
Emetteur réel du courrier électronique avant son transfert quand il a existé plusieurs émetteurs. Le paramètre est une adresse.
- Return-Path.
Chemin de retour du courrier électronique vers son émetteur. Le paramètre est une route.
- Sender.
Emetteur réel quand il existe plusieurs émetteurs. Le paramètre est une adresse.
- Subject.
Objet du courrier électronique.
- To.
Destinataires du courrier électronique. Le paramètre est une liste d'adresses.
Il peut exister d'autres commandes correspondant à des extensions. Elles commencent généralement par X-, sauf les suivantes :
- Content-Description.
Description du contenu.
- Content-ID.
Identifiant du contenu.
- Content-Transfer-Encoding.
Encodage du corps du courrier électronique. Les valeurs usuelles sont :
- 7bit.
Le contenu est au format texte en Ascii sur 7 bits, avec des lignes limitées à 1000 caractères et terminées par \r\n. - 8bit.
Le contenu est au format texte en Ascii sur 8 bits, avec des lignes limitées à 1000 caractères et terminées par \r\n. - base64.
Le contenu est formaté selon l'algorithme base64. - binary.
Le contenu est au format binaire sur 8 bits, sans notion de ligne. - quoted-printable.
Le contenu est formaté selon l'algorithme quoted-printable.
- Content-Type.
Type du contenu du corps du courrier. Les valeurs usuelles sont :
- Type application.
- Sous-type octet-stream.
Flux d'octets encapsulés.
Ce sous-type comporte les paramètres suivants :
- padding.
Nombre de bits à 0 en fin du flux qui ont été ajoutés pour caler le contenu sur un nombre entiers d'octets. Il est obligatoire. - type.
Description pour l'utilisateur. Il est facultatif.
- Sous-type PostScript.
Document encapsulé au format PostScript.
- Type audio.
Son encapsulé. Il n'existe pas de standard pour dénommer le format. - Type image.
- Sous-type gif.
Image encapsulée au format Graphics Interchange Format de CompuServe. - Sous-type jpeg.
Image encapsulée au format Joint Photographic Experts Group.
- Type message.
- Sous-type external-body.
Référence vers un contenu externe. Comme cela est compliqué et d'un usage rare, nous le détaillerons pas. - Sous-type partial.
Courrier électronique encapsulé. Cela est utilisé pour découper les courriers qui sont longs.
Ce sous-type comporte les paramètres suivants :
- id.
Sa valeur identifie de façon unique le message à recomposer. Il est obligatoire. - number.
Sa valeur est le numéro du fragment. Il est obligatoire. - total.
Sa valeur est le numéro du dernier fragment. Il est obligatoire pour le dernier fragment, facultatif sinon.
- Sous-type rfc822.
Courrier électronique encapsulé en intégralité. Cela est utilisé pour les messages transférés ou rejetés automatiquement.
- Type multipart.
- Sous-type alternative.
Contenu dans un format alternatif à afficher en substitution du format primaire. - Sous-type digest.
Contenu encapsulant que des courriers électroniques. Il est utilisé pour des mailing-list. - Sous-type mixed.
Contenu dans un format mixte. - Sous-type parallel.
Contenu dans un format alternatif à afficher en parallèle du format primaire.
Chaque sous-type comporte le paramètre boundary délimitant le contenu, combiné avec la chaîne Soustraction Soustraction -- :
Content-type: multipart/mixed; boundary="MaLimite"
--MaLimite
Content-type: text/plain; charset=us-ascii
Partie 1.
--MaLimite
Content-type: text/plain; charset=us-ascii
Partie2.
--MaLimite--
- Type text.
- Sous-type plain.
Texte non formaté. - Sous-type richtext.
Texte formaté selon le standard Rich Text Format.
- Type video.
- Sous-type mpeg.
Image encapsulée au format Motion Jpeg.
- MIME-Type.
Version de l'encodage du corps du courrier. Normalement 1.0.
Une commande ou ses paramètres peut comporter des commentaires écrits entre caractères parenthèse ouvrante ( et parenthèse fermante ) .
Un mot est soit :
- Une succession de caractères .
Il se termine par un séparateur espace ou une tabulation \t ou sur un caractère spécial tel deux-points : , point-virgule ; , virgule , , etc.
- Une chaîne de caractères encadrée par deux caractères guillemets " .
Le caractère division inversée \ permet de protéger un caractère particulier.
- Une chaîne de caractères bruts entre les caractères crochet ouvrant [ et et crochant ouvrant ] .
Le caractère division inversée \ permet de protéger un caractère particulier.
Une phase est une succession de mots se terminant par un caractère spécial tel deux-points : , point-virgule ; , virgule , , etc.
Une adresse est une succession de caractères entre caractères inférieur < et supérieur > .
Une liste a ses élements séparés par le caractères virgule , .
Syntaxe d'un courrier électronique
EnteteCourrier :
Dates :
DateEmissionAvantTransfertOption :
| Resent-Date :
DateEmissionAvantTransfert \r\n
;
Source :
TraceOption :
CheminRetour :
Return-Path :
Adresse \r\n
;
CheminRoutage :
ListeEtapesRoutage :
Routage :
from
Adresse
by
Adresse
via
Chemin
ListeProtocoles
id
IdentifiantMessage
for
Adresse
;
ListeProtocoles :
Protocole :
Origine :
AdresseOrigine :
From :
Adresse \r\n
| Sender
Adresse \r\n
From
ListeAdresses \r\n
;
ListeAdresses :
AdresseReponseOption :
TransfertOption :
TransfertAdresseOrigine :
Resent-From :
Adresse \r\n
| Resent-Sender :
Adresse \r\n
Resent-From :
ListeAdresses \r\n
;
TransfertAdresseReponseOption :
ListeDestinations :
Destination :
ListeCommandesOptionnelles :
CommandeOptionnelle :
Message-ID :
IdentifiantMessage \r\n
| Resent-Message-ID :
IdentifiantMessage \r\n
| In-Reply-To :
Adresse \r\n
| References :
SuccessionMots \r\n
| Keywords :
SuccessionMots \r\n
| Subject :
DescriptionLibre \r\n
| Comments :
DescriptionLibre \r\n
| Encrypted :
Signature1 Signature2 \r\n
| MIME-Type :
1.0 \r\n
| Content-Type :
ContentType \r\n
| Content-Transfer-Encoding :
ContentTransferEncoding \r\n
| Content-ID :
Identifiant \r\n
| Content-Description :
DescriptionLibre \r\n
;
SuccessionMots :
ContentType :
application / octet-stream ; pading =
NbBits ; type =
Type
| application / PostScript
| audio / basic
| image / gif
| image / jpeg
| message / external-body
| message / partial ; id =
Identifiant ; number =
NumeroFragment ; total =
NombreDeFragments
| message / rfc822
| multipart / alternative ; boundary =
Limite
| multipart / digest ; boundary =
Limite
| multipart / mixed ; boundary =
Limite
| multipart / parallel ; boundary =
Limite
| text / plain
| text / richtext
| video / mpeg
;
ContentTransfertEncoding :
7bit
| 8bit
| base64
| binary
| quoted-printable
;
Exemple d'une conversation au format Rfc 822
Cette conversation ne concerne que les commandes :
Return-Path: <helene@yahoo.fr> \r\n
Delivered-To: francois@hotmail.com \r\n
Received: from b0.monhebergeur.net (MyQueue queue) (213.186.33.50) \r\n
by b0.monhebergeur.net with SMTP; 4 Dec 2005 19:33:29 -0000 \r\n
Received: from mail19.ha.monhebergeur.net (10.0.50.19) \r\n
by mail19.ha.monhebergeur.net with SMTP; 4 Dec 2005 19:33:27 -0000 \r\n
Received: from b0.monhebergeur.net (MyQueue queue-pre) (213.186.33.50) \r\n
by b0.monhebergeur.net with SMTP; 4 Dec 2005 19:33:27 -0000 \r\n
Received: from mx3.yahoo.fr (195.68.13.28) \r\n
by mx1.monhebergeur.net with SMTP; 4 Dec 2005 19:33:27 -0000 \r\n
Received: from [218.126.116.231] (port=21002 MyQueue=ordinateur) \r\n
by mx3.yahoo.fr with asmtp \r\n
id 1dsqdqy-0003JV-00 \r\n
for francois@hotmail.com; Sun, 04 Dec 2005 22:33:26 +0300 \r\n
Message-ID: <00099QJfaa0a$jashah0$edsjk6d9@ordinateur> \r\n
From: "Helene Mac ARTHUR" <helene@yahoo.fr> \r\n
To: "François Mitterand" <francois@hotmail.com> \r\n
References: <GHAJJKJDJQKJDKQDJJDKQJJKQJJQ.francois@hotmail.com> \r\n
Subject: Re: Thank you \r\n
Date: Sun, 4 Dec 2005 22:35:05 +0300 \r\n
MIME-Version: 1.0 \r\n
Content-Type: multipart/alternative; \r\n
boundary="----=_NextPart_000_0021_0156ABCD.AD0CDE40" \r\n
X-Priority: 3 \r\n
X-MSMail-Priority: Normal \r\n
X-Mailer: Microsoft Outlook Express 5.00.2919.6600 \r\n
Disposition-Notification-To: "Helene Mac ARTHUR" <helene@yahoo.fr> \r\n
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6600 \r\n
X-MonHebergeur-Remote: 194.67.23.149 (mx3.yahoo.fr) \r\n
X-MonHebergeur-Local: 213.186.33.29 (mx1.monhebergeur.net) \r\n
X-Spam-Check: fait|type 1&3|0.9|H 0.5 \r\n
\r\n
--_NextPart_000_0021_0156ABCD.AD0CDE40\r\n
Merci pour le pain.\r\n
_NextPart_000_0021_0156ABCD.AD0CDE40--\r\n