Een e-mail decoderen in MIME-indeling

De meeste e-mails die vandaag worden verzonden, zijn in MIME-indeling (Multipupose Internet Mail Extensions). Hierdoor kunnen e-mails worden verzonden met platte tekst en rich text/HTML-versies, inline afbeeldingen en bijlagen. MIME-extensies kunnen aan een bericht worden toegevoegd in standaard RFC/822-formaat, zodat achterwaartse compatibiliteit met oudere e-mailsystemen wordt bereikt.

Stap 1

Laad de inhoud van het e-mailbericht.

Video van de dag

Stap 2

Controleer de kop "Content-Type". Als het inhoudstype uit meerdere delen bestaat (d.w.z. "uit meerdere delen/gemengd", "uit meerdere delen/alternatief", enz.), heeft het bericht meerdere secties om te ontleden. Als het inhoudstype uit meerdere delen bestaat, gaat u verder met de onderstaande stappen.

Stap 3

De Content-Type-header moet een unieke tekenreeks bevatten die wordt gebruikt door de code die het MIME-bericht heeft gegenereerd om MIME-onderdeelgrenzen aan te duiden. Voorbeeld:

Inhoudstype: meerdelig/gemengd; grens = "part_c7161025_fe8a_45f4_83ef_6befcfa5d021"

De grensreeks is in dit geval "part_c7161025_fe8a_45f4_83ef_6befcfa5d021".

Stap 4

Elk MIME-gedeelte wordt gescheiden door de grensreeks voorafgegaan door twee streepjes ("--") op een lege regel. U moet het bericht regel voor regel scannen op zoek naar de onderdeelgrenzen. Alle tekst tussen de grenzen behalve de laatste CR/LF maakt deel uit van dat MIME-gedeelte.

Belangrijk: het laatste MIME-gedeelte eindigt met de grensreeks gevolgd door nog twee streepjes.

Voorbeeld:

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Eerste MIME-onderdeel.

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Tweede MIME-deel

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Laatste MIME-onderdeel.

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021--

Stap 5

Elk MIME-gedeelte moet vervolgens worden geparseerd. Het formaat van elk MIME-onderdeel is vergelijkbaar met het originele RFC/822-geformatteerde bericht. Het bevat een reeks kopteksten, gevolgd door een lege regel en vervolgens de hoofdtekst.

Stap 6

Een MIME-onderdeel kan zelf uit meerdere delen bestaan, met zijn eigen "Content-Type"-header en grensreeks. Uw code moet recursief MIME-onderdelen parseren totdat deze de onderliggende knooppunten bereikt.

Stap 7

Een MIME-onderdeel kan gewoon een binaire bijlage zijn. In dit geval wordt meestal een Filename-header meegeleverd, samen met de overdrachtscodering. BASE64 is een populair coderingstype. In dit geval moet de hele body van het MIME-deel BASE64-gedecodeerd zijn. Als voorbeeld zijn hier de eerste paar regels van een bijgevoegde JPG-afbeelding:

=NextPart_003_01C755EF.43F2628D Inhoudstype: afbeelding/jpeg; name="testimage.jpg" Content-Transfer-Encoding: base64 Content-Description: testimage.jpg Content-Disposition: bijlage; bestandsnaam="testafbeelding.jpg"

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyQIyMjMjIyQIyMjMjIyQIyMjMjA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA

Stap 8

De HTML-tekst van het bericht moet in een MIME-sectie staan ​​met ContentType: Text/Html, in een ContentType: Multipart/Alternative MIME-sectie.

Stap 9

De tekst zonder opmaak van het bericht moet in een MIME-sectie staan ​​met ContentType: Text/plain, in een ContentType: Multipart/Alternative MIME-sectie.

Dingen die je nodig hebt

  • Kennis van een computertaal (bijv. C++, C#, VB, etc).

  • Basiskennis van het formaat van een RFC/822 geformatteerd e-mailbericht.

Tip

Raadpleeg RFC 822 http://www.ietf.org/rfc/rfc0822.txt? nummer=822 en RFC 1341 http://www.ietf.org/rfc/rfc1341.txt? nummer = 1341 voor meer informatie. Als u in C# codeert, is een uitstekende gratis bibliotheek beschikbaar op http://www.codeproject.com/csharp/mime_project.asp.