Wielofunkcyjne rozszerzenia poczty internetowej

Multipurpose Internet Mail Extensions (MIME) lubelektronicznej wielofunkcyjny Rozszerzenia Internettostandard internetowy, który rozszerzaformat danychze-mailido tekstu wsparcia w różnychkodowania znakówinnych niżASCII, treści nietekstowej, stwardnienie treści i informacji nagłówka w kodowaniu innym niżASCII. Ponieważ wiadomości e-mail są zwykle wysyłane przezSMTPw formacie MIME, są one często nazywane wiadomościamiSMTP / MIME.

Pierwotnie SMTP był zaprojektowany do przesyłania tylko plików tekstowych (zakodowanych w ASCII ). Wraz z pojawieniem się multimediów i coraz większym wykorzystaniem aplikacji biurowych pojawiła się potrzeba wymiany, oprócz plików tekstowych, plików binarnych (format aplikacji biurowych, obrazów, dźwięków, plików skompresowanych).

Typy treści zdefiniowane w standardzie MIME mogą być wykorzystywane do celów innych niż wysyłanie wiadomości e-mail, w protokołach komunikacyjnych, takich jak HTTP dla sieci WWW .

MIME jest początkowo określony w pięciu dokumentach RFC  : RFC  2045, RFC  2046, RFC  2047, RFC  2048, RFC  2049. RFC 2045 jest uzupełniany przez RFC  2077. RFC 2048 , obecnie przestarzały, został zastąpiony przez RFC  6838 i RFC  4289.

Wprowadzenie

Podstawowy protokół transmisji poczty e-mail, SMTP, obsługuje tylko znaki ASCII (o długościbitów ). Ogranicza to e-maile do wiadomości zawierających tylko te znaki, czyli w kilku językach, takich jak angielski . Inne języki oparte na alfabecie łacińskim, w tym znaki diakrytyczne, nie są obsługiwane przez ASCII, więc te wiadomości nie mogą być poprawnie reprezentowane w podstawowych wiadomościach e-mail.

MIME definiuje mechanizmy wysyłania innych rodzajów informacji, takich jak tekst przy użyciu kodowania znaków innego niż ASCII (a więc prawdopodobnie w języku innym niż angielski) lub dane binarne (w tym pliki zawierające obrazy , dźwięki , filmy lub programy komputerowe ).

MIME jest również podstawowym składnikiem protokołów komunikacyjnych, takich jak HTTP , które wymagają wysyłania danych w tym samym kontekście, co wysyłanie wiadomości e-mail , Mimo że dane te nie są pocztą elektroniczną. Integracja lub wyodrębnianie danych w formacie MIME odbywa się zwykle automatycznie przez klienta poczty e-mail lub serwer poczty e-mail podczas wysyłania lub odbierania wiadomości e-mail.

Podstawowy format e-mail został zdefiniowany w dokumencie RFC  2822, która to zmiana z RFC  822. Normy te określają format nagłówków i treści wiadomości zawierających tekst, a także ogólnych nagłówków, takich jak „  To: ”, „  Subject: «»  From: «lub»  Date: ” . MIME definiuje zestaw dodatkowych nagłówków dla typu zawartości wiadomości („  Content‑Type: ”) i jej kodowania przesyłania („  Content-Transfer-Encoding: ”). Kodowanie transferu to sposób na przetłumaczenie treści wiadomości na ASCII. Dzięki takiemu tłumaczeniu początkowa treść może zawierać dowolne 8-bitowe dane (tekst w UTF-8 , plik binarny itp.). MIME definiuje również mechanizm używania tej funkcjonalności w nagłówkach wiadomości; pozwala to na przykład używać akcentów w temacie wiadomości e-mail lub w imieniu odbiorcy.

MIME jest rozszerzalny. Jego definicja obejmuje metodę rejestracji nowych typów treści lub innych wartości atrybutów.

Jednym z innych wyraźnych celów definicji MIME jest rezygnacja z konieczności zmiany istniejących serwerów pocztowych i umożliwienie podstawowej poczty e-mail prawidłowego funkcjonowania z istniejącymi klientami. Cel ten jest osiągany dzięki temu, że atrybuty wiadomości MIME są opcjonalne, a domyślnym zachowaniem jest tworzenie wiadomości tekstowej bez MIME, która może być poprawnie zinterpretowana przez klienta.

Nagłówki MIME

MIME-Version

Obecność tego nagłówka wskazuje, że treść wiadomości jest sformatowana w MIME. Wartość to zazwyczaj „1,0”, więc nagłówek wygląda następująco:

MIME-Version: 1.0

Content-Type

Ten nagłówek wskazuje rodzaj mediów internetowych treści wiadomości, składający się z typu i podtypu , na przykład:

Content-Type: text/plain

MIME umożliwia wiadomościom zorganizowanie wielu części w strukturze drzewa , przy użyciu typu „  multipart ” dla węzłów wewnętrznych.

Mechanizm ten wspiera w szczególności:

Content-Transfer-Encoding

Specyfikacja MIME ( RFC 2045 ) definiuje zestaw metod przesyłania lub kodowań (przywołanych na tej liście IANA ) w celu przedstawienia dowolnych danych jako tekstu ASCII. Nagłówek MIME „  Content-Transfer-Encoding ” wskazuje używaną metodę. Może mieć jedną z poniższych wartości (nie jest podatny na pękanie ):

Żadne kodowanie nie jest określone specjalnie do wysyłania dowolnych danych binarnych przez transport SMTP z rozszerzeniem 8BITMIME. Należy stosować metody Base64 lub Quoted-Printable (z ich odpowiednimi nieefektywnościami). Te ograniczenia nie mają zastosowania do innych zastosowań MIME, takich jak usługi internetowe z załącznikiem MIME lub MTOM .

Kodowanie tekstu

Dane tekstowe (typ „  text ”) są zapisywane w określonym kodowaniu znaków , na przykład latin-9 lub UTF-8 . To kodowanie można określić za pomocą atrybutu  charset= „ Content-Type: ” w nagłówku „  ”. Może to przyjąć dowolną wartość określoną przez IANA . Na przykład :

Content-Type: text/plain; charset=utf-8

Tego kodowania nie należy mylić z kodowaniem przesyłania określonym w nagłówku „  Content-Transfer-Encoding: ”. W przypadku treści tekstowych oba kodowania są stosowane kolejno. Na przykład :

Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Ceci est un message encod=C3=A9 en UTF-8, puis transform=C3=A9 en ASCII par la m=C3=A9thode "Quoted-Printable".

W tym przykładzie litera „é” jest kodowana w UTF-8 przez dwa bajty wartości szesnastkowych C3 i A9, które z kolei są kodowane w cudzysłowach do druku przez sekwencję „  =C3=A9 ”.

Zakodowane słowa

Począwszy od RFC 2822 , nazwy nagłówków wiadomości i ich wartości są zawsze w znakach ASCII. Wartości, które zawierają dane inne niż ASCII, muszą używać tak zwanej składni „  zakodowanego słowa  ” MIME ( RFC 2047 ) zamiast standardowych wartości tekstowych. Ta składnia wykorzystuje ciągi znaków ASCII zarówno do określenia oryginalnego kodowania tekstu (odpowiednik atrybutu charset=nagłówka Content-Type:), jak i do kodowania przesyłania (odpowiednik nagłówka Content-Transfer-Encoding:).

Składnia jest następująca:

=?encodage?méthode?texte?=

Różnica między Q-encoding i Quoted-Printable

Kody ASCII dla znaku zapytania ( ?) i znaku równości ( =) nie powinny być przedstawiane bezpośrednio, ponieważ służą do oddzielania zakodowanych słów. Nie należy również używać kodu ASCII dla znaku spacji, ponieważ może to powodować błędy w starszych koderach, takie jak niechciana separacja słów. Aby kodowanie było jaśniejsze i łatwiejsze do odczytania, znak podkreślenia („  _ ”) jest używany do reprezentowania spacji. Dlatego znak podkreślenia nie może być już reprezentowany bezpośrednio. Użycie zakodowanych słów w niektórych częściach nagłówków nakłada ograniczenia na znaki, które mają być przedstawiane bezpośrednio.

Na przykład,

Subject: =?utf-8?Q?=C2=A1Hola,_se=C3=B1or!?=

jest interpretowane jako:

Temat: ¡Hola, señor!

Format zakodowanego słowa nie jest używany w nazwach nagłówków (na przykład „  Subject: ”). Te nazwy nagłówków w wiadomości są zawsze w języku angielskim. Gdy wiadomość jest wyświetlana w nieanglojęzycznym kliencie poczty e-mail, nazwy nagłówków mogą być przetłumaczone przez klienta.

Wiadomość wieloczęściowa

Wieloczęściowy komunikat MIME określa linię separatora w nagłówku „  Content-type: ” za pośrednictwem atrybutu „  boundary= ”. To oddzielenie, które nie powinno pojawić się nigdzie indziej, jest umieszczane między częściami oraz na początku i na końcu treści wiadomości w następujący sposób:

Content-type: multipart/mixed; boundary="''frontière''" MIME-version: 1.0 This is a multi-part message in MIME format. --''frontière'' Content-type: text/plain This is the body of the message. --''frontière'' Content-type: application/octet-stream Content-transfer-encoding: base64 PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg== --''frontière''--

Każda z tych części składa się z własnego nagłówka treści (zero, jedno lub więcej pól nagłówka Content-*:) i treści. Wiele części może być zawartych w innych częściach, z których każda ma własną granicę. Pole Content-Transfer-Encoding:typu wieloczęściowego powinno mieć wartość „  7bit ”, „  8bit ” lub „  binary ”, aby uniknąć problemów z dekodowaniem różnych warstw wieloczęściowych. Blok wieloczęściowy nie ma zestawu znaków, znaki inne niż ASCII w nagłówkach są przetwarzane przez system zakodowanych słów, a treści mogą mieć określony zestaw znaków odpowiedni do ich zawartości.

Uwagi:

Podtypy

Standard MIME definiuje kilka podtypów wiadomości wieloczęściowych w celu określenia charakteru różnych części wiadomości i ich relacji z innymi częściami. Podtyp jest określony przez nagłówek „  Content-type: ” załączającej wiadomości. Na przykład wieloczęściowa wiadomość MIME używająca podtypu „  digest ” powinna mieć swój nagłówek „  Content-Type: ” do „  multipart/digest ”. Dokument RFC początkowo zidentyfikował cztery podtypy: „  mixed ”, „  alternate ”, „  digest ” i „  parallel ”. Aplikacja musi obsługiwać co najmniej podtypy „  mixed ” i „  digest ”, pozostałe są opcjonalne. Dodatkowe podtypy, takie jak „  signed ” lub „  form-data ”, zostały zdefiniowane w innych dokumentach RFC .

Używane są głównie następujące podtypy:

mixed

Typ "  multipart/mixed " (zdefiniowany w RFC2046, Rozdział 5.1.3 ) jest używany do wysyłania plików z różnymi nagłówkami "  Content-type: " (jako załączniki). Jeśli pliki są łatwe do odczytania lub są obrazami, większość klientów poczty e-mail wyświetla te pliki bezpośrednio w treści wiadomości (chyba że nagłówek „  Content-disposition: ” stanowi inaczej). W przeciwnym razie pliki są postrzegane jako załączniki. Domyślny typ zawartości dla tych części to „  text/plain ”.

Dokument RFC określa również, że wszystkie podtypy „  multipart ” nierozpoznane przez implementację powinny być traktowane tak samo jak „  multipart/mixed ”.

digest

Wpisz „  multipart/digest ” (zdefiniowany w RFC2046, sekcja 5.1.5 ) to prosty sposób na wysyłanie wielu wiadomości tekstowych. Domyślny typ zawartości to „  message/rfc822 ”.

alternative

Typ „  multipart/alternative ” (zdefiniowany w RFC2046, sekcja 5.1.4 ) wskazuje, że każda część jest alternatywną wersją tej samej treści w innym formacie. Formaty są uporządkowane rosnąco zgodnie z oryginalną zawartością. Odbiorca może więc wybrać najlepszą reprezentację, którą jest w stanie przetworzyć, na ogół ostatnią z listy.

Ponieważ klient na ogół nie chce wysyłać treści mniej znaczących niż zwykły tekst, jest on wysyłany jako pierwszy, co upraszcza przetwarzanie dla klientów, którzy nie rozumieją typu „ multipart ”, ponieważ jest to widoczna część tekstu.  Pierwsza.

Głównym zastosowaniem typu „  multipart/alternative ” jest wysyłanie wiadomości e-mail w formacie HTML z jego odpowiednikiem w formacie tekstowym, aby zachować czytelność wiadomości dla klienta poczty e-mail, który nie może wyświetlać HTML (klient tekstowy).

Chociaż uważa się, że każda część posta przedstawia tę samą treść, nie ma gwarancji. Na przykład filtr antyspamowy może łatwiej przeskanować zwykłą tekstową część wiadomości niż część HTML; mając na uwadze, że edytor spamu zamiast tego utworzy wiadomość HTML z zawartością reklamową i zwykłą wiadomością tekstową, która jest nieszkodliwa lub niezwiązana z reklamą.

related

Typ „  multipart/related ” (zdefiniowany w RFC2387 ) służy do określenia, że ​​różne części nie powinny być traktowane indywidualnie, ale jako całość. Wiadomość składa się z części głównej (domyślnie pierwszej), która odwołuje się do innych części, która może również odnosić się do innych części. Do części wiadomości często odwołuje się identyfikator treści (nagłówek „  Content-ID: ”). Składnia odniesień nie jest określona, ​​pozostawia się to intencji używanego protokołu.

Jednym z typowych zastosowań tego podtypu jest wysyłanie strony internetowej z obrazami w jednej wiadomości. Część główna zawiera dokument HTML, a obrazy są przechowywane w kolejnych częściach.

report

Typ „  multipart/report ” (zdefiniowany w RFC3462 ) reprezentuje wiadomość zawierającą dane sformatowane do odczytu przez serwer poczty elektronicznej. Zawiera część typu „  text/plain ” (lub inną łatwą do odczytania treść) i inną część typu „  message/delivery-status ”, która zawiera dane sformatowane dla serwera poczty.

signed

Typ „  multipart/signed ” (zdefiniowany w RFC1847, sekcja 2.1 ) służy do dołączania podpisu cyfrowego do wiadomości. Składa się z dwóch części: treści wiadomości i podpisu. Cała część treści wiadomości, w tym nagłówki MIME, jest używana do generowania podpisu. Możliwe są różne typy podpisów, takie jak „  application/pgp-signature ” lub „  application/x-pkcs7-signature ”.

encrypted

Typ „  multipart/encrypted ” (zdefiniowany w RFC1847, sekcja 2.2 ) jest używany do wysyłania zaszyfrowanych treści . Pierwsza część zawiera informacje niezbędne do odszyfrowania drugiej części (typu „  application/octet-stream ”).

form-data

Typ „  multipart/form-data ” (zdefiniowany w RFC2388 ) służy do wysyłania danych z formularza. Pierwotnie zdefiniowany jako część HTML 4.0 , jest częściej używany do wysyłania plików przez HTTP .

Bibliografia

  1. Podręcznik Debiana .
  2. (w) "  Multipurpose Internet Mail Extensions (MIME) Część pierwsza: Format organów Internet Message  " Prośba o komentarze n o  2045Listopad 1996.
  3. (w) "  Multipurpose Internet Mail Extensions (MIME) Część druga: Typy mediów  " Prośba o komentarze n o  2046,Listopad 1996.
  4. (w) "  MIME (Multipurpose Internet Mail Extensions) Część trzecia: nagłówek Extensions for Non-ASCII Tekst  " Request for Comments n °  2047Listopad 1996.
  5. (w) "  Multipurpose Internet Mail Extensions (MIME) Część czwarta: Procedury rejestracyjne  " Prośba o komentarze n o  2048,Listopad 1996.
  6. (w) "  Multipurpose Internet Mail Extensions (MIME) Część piąta: Kryteria zgodności i przykłady  " Prośba o komentarze n o  2049,Listopad 1996.
  7. (w) "  Model podstawowy typ treści Multipurpose Internet Mail Extensions  " Request for Comments n o  2077,styczeń 1997.
  8. (w) "  Rodzaj Mediów techniczne i procedury rejestracji  " Request for Comments n ö  6838,Styczeń 2013.
  9. (w) "  Multipurpose Internet Mail Extensions (MIME) Część czwarta: Procedury rejestracyjne  " Prośba o komentarze n o  4289,grudzień 2005.
  10. (w) "  Format Internet Message  " Prośba o komentarze n o  2822Kwiecień 2001.
  11. (w) "  standardowego formatu Z ARPA internetowych wiadomości TEXT  " Request for Comments n o  82213 sierpnia 1982.
RFC 1847 Zabezpieczenia wieloczęściowe dla MIME: Multipart / Signed i Multipart / Encrypted RFC 2231 Wartość parametru MIME i rozszerzenia zakodowanych słów: zestawy znaków, języki i kontynuacje. N. Freed, K. Moore. Listopad 1997. RFC 2387 Typ zawartości wieloczęściowej / pokrewnej MIME

Zobacz też

Powiązane artykuły

Linki zewnętrzne