Większość e-maili wysyłanych dzisiaj ma format MIME (Multipupose Internet Mail Extensions). Umożliwia to wysyłanie wiadomości e-mail ze zwykłym tekstem i wersjami sformatowanego tekstu/HTML, wbudowanymi obrazami i załącznikami. Rozszerzenia MIME można dodawać do wiadomości w standardowym formacie RFC/822, dzięki czemu uzyskuje się zgodność wsteczną ze starszymi systemami pocztowymi.
Krok 1
Załaduj treść wiadomości e-mail.
Wideo dnia
Krok 2
Sprawdź nagłówek „Content-Type”. Jeśli typ treści jest wieloczęściowy (tj. „wieloczęściowy/mieszany”, „wieloczęściowy/alternatywny” itp.), wiadomość będzie miała wiele sekcji do przeanalizowania. Jeśli typ zawartości jest wieloczęściowy, przejdź do poniższych kroków.
Krok 3
Nagłówek Content-Type powinien zawierać unikalny ciąg znaków używany przez kod, który wygenerował komunikat MIME do wyznaczenia granic części MIME. Przykład:
Content-Type: wieloczęściowy/mieszany; granica="part_c7161025_fe8a_45f4_83ef_6befcfa5d021"
W tym przypadku ciąg graniczny to „part_c7161025_fe8a_45f4_83ef_6befcfa5d021”.
Krok 4
Każda część MIME będzie oddzielona ciągiem ograniczającym, poprzedzonym dwoma myślnikami ("--") w pustym wierszu. Będziesz musiał przeskanować wiadomość linia po linii, szukając granic części. Cały tekst pomiędzy granicami z wyjątkiem końcowego CR/LF jest częścią tej części MIME.
Ważne: Ostatnia część MIME zakończy się ciągiem ograniczającym, po którym następują dwa dodatkowe myślniki.
Przykład:
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Pierwsza część MIME.
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Druga część MIME
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Ostatnia część MIME.
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021--
Krok 5
Każda część MIME musi być następnie przeanalizowana. Format każdej części MIME jest podobny do oryginalnego komunikatu w formacie RFC/822. Będzie zawierać serię nagłówków, po których następuje pusta linia, a następnie dane treści.
Krok 6
Część MIME może sama być wieloczęściowa, z własnym nagłówkiem „Content-Type” i ciągiem ograniczającym. Twój kod musi rekurencyjnie analizować części MIME, aż dotrze do węzłów podrzędnych.
Krok 7
Część MIME może być po prostu załącznikiem binarnym. W takim przypadku zazwyczaj dostarczany jest nagłówek Filename wraz z kodowaniem transferu. BASE64 to popularny typ kodowania. W takim przypadku cała treść części MIME musi być zdekodowana w standardzie BASE64. Jako przykład podajemy kilka pierwszych linii dołączonego obrazu JPG:
=NextPart_003_01C755EF.43F2628D Typ treści: image/jpeg; name="testimage.jpg" Content-Transfer-Encoding: base64 Content-Description: testimage.jpg Content-Disposition: załącznik; filename="obraz testowy.jpg"
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjyyMjMjIAjMjMjMj AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAageDAWIEAwUFBAQA
Krok 8
Treść HTML wiadomości powinna znajdować się w sekcji MIME z ContentType: Text/Html, wewnątrz sekcji ContentType: Multipart/Alternative MIME.
Krok 9
Treść wiadomości w postaci zwykłego tekstu powinna znajdować się w sekcji MIME z ContentType: Text/plain, wewnątrz sekcji ContentType: Multipart/Alternative MIME.
Rzeczy, których będziesz potrzebować
Znajomość języka komputerowego (tj. C++, C#, VB itp.).
Podstawowa znajomość formatu wiadomości e-mail w formacie RFC/822.
Wskazówka
Sprawdź RFC 822 http://www.ietf.org/rfc/rfc0822.txt? liczba=822 i RFC 1341 http://www.ietf.org/rfc/rfc1341.txt? liczba=1341 po więcej informacji. Jeśli kodujesz w C#, dostępna jest doskonała darmowa biblioteka pod adresem http://www.codeproject.com/csharp/mime_project.asp.