Τα περισσότερα μηνύματα ηλεκτρονικού ταχυδρομείου που αποστέλλονται σήμερα έχουν μορφοποίηση MIME (Πολλαπλών θέσεων Internet Mail Extensions). Αυτό επιτρέπει την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου με απλό κείμενο και εκδόσεις εμπλουτισμένου κειμένου/HTML, ενσωματωμένες εικόνες και συνημμένα. Οι επεκτάσεις MIME μπορούν να προστεθούν σε ένα μήνυμα σε τυπική μορφή RFC/822, ώστε να επιτυγχάνεται συμβατότητα προς τα πίσω με παλαιότερα συστήματα αλληλογραφίας.
Βήμα 1
Φορτώστε τα περιεχόμενα του μηνύματος email.
Το βίντεο της ημέρας
Βήμα 2
Ελέγξτε την κεφαλίδα "Τύπος περιεχομένου". Εάν ο τύπος περιεχομένου είναι πολυμερής (δηλαδή "πολυμερής/μικτός", "πολυμερής/εναλλακτικός" κ.λπ.), το μήνυμα θα έχει πολλαπλές ενότητες προς ανάλυση. Εάν ο τύπος περιεχομένου είναι πολυμερής, συνεχίστε με τα παρακάτω βήματα.
Βήμα 3
Η κεφαλίδα Content-Type θα πρέπει να περιέχει μια μοναδική συμβολοσειρά που χρησιμοποιείται από τον κώδικα που δημιούργησε το μήνυμα MIME για τον προσδιορισμό των ορίων τμημάτων MIME. Παράδειγμα:
Τύπος περιεχομένου: πολυμερής/μικτός. boundary="part_c7161025_fe8a_45f4_83ef_6befcfa5d021"
Η συμβολοσειρά ορίων σε αυτήν την περίπτωση είναι "part_c7161025_fe8a_45f4_83ef_6befcfa5d021".
Βήμα 4
Κάθε τμήμα MIME θα χωρίζεται από τη συμβολοσειρά ορίων πριν από δύο παύλες ("--") σε μια κενή γραμμή. Θα χρειαστεί να σαρώσετε το μήνυμα γραμμή προς γραμμή αναζητώντας τα όρια του τμήματος. Όλο το κείμενο ανάμεσα στα όρια εκτός από το τελικό CR/LF είναι μέρος αυτού του τμήματος MIME.
Σημαντικό: Το τελευταίο τμήμα MIME θα τελειώνει με τη συμβολοσειρά ορίων ακολουθούμενη από δύο ακόμη παύλες.
Παράδειγμα:
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Πρώτο μέρος MIME.
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Δεύτερο μέρος MIME
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Τελευταίο τμήμα MIME.
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021--
Βήμα 5
Στη συνέχεια, κάθε τμήμα MIME πρέπει να αναλυθεί. Η μορφή κάθε τμήματος MIME είναι παρόμοια με το αρχικό μορφοποιημένο μήνυμα RFC/822. Θα περιέχει μια σειρά από κεφαλίδες, ακολουθούμενη από μια κενή γραμμή και μετά τα δεδομένα σώματος.
Βήμα 6
Ένα τμήμα MIME μπορεί να είναι το ίδιο πολυμερές, με τη δική του κεφαλίδα "Τύπος περιεχομένου" και συμβολοσειρά ορίων. Ο κώδικάς σας πρέπει να αναλύει αναδρομικά τμήματα MIME μέχρι να φτάσει στους θυγατρικούς κόμβους.
Βήμα 7
Ένα τμήμα MIME μπορεί απλώς να είναι ένα δυαδικό συνημμένο. Σε αυτήν την περίπτωση, συνήθως παρέχεται μια κεφαλίδα ονόματος αρχείου, μαζί με την κωδικοποίηση μεταφοράς. Το BASE64 είναι ένας δημοφιλής τύπος κωδικοποίησης. Σε αυτήν την περίπτωση, ολόκληρο το εξάρτημα MIME πρέπει να αποκωδικοποιηθεί BASE64. Ως παράδειγμα, εδώ είναι οι πρώτες λίγες γραμμές μιας συνημμένης εικόνας JPG:
=NextPart_003_01C755EF.43F2628D Τύπος περιεχομένου: εικόνα/jpeg; name="testimage.jpg" Content-Transfer-Encoding: base64 Content-Description: testimage.jpg Περιεχόμενο-Διάθεση: συνημμένο; filename="testimage.jpg"
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjMjIyMjIyMjIyMjIyMjIyMjIyMjMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjMjIm AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAACAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
Βήμα 8
Το σώμα HTML του μηνύματος πρέπει να βρίσκεται σε μια ενότητα MIME με ContentType: Text/Html, μέσα σε μια ενότητα ContentType: Multipart/Alternative MIME.
Βήμα 9
Το σώμα απλού κειμένου του μηνύματος πρέπει να βρίσκεται σε μια ενότητα MIME με ContentType: Text/plain, μέσα σε μια ενότητα ContentType: Multipart/Alternative MIME.
Πράγματα που θα χρειαστείτε
Γνώση γλώσσας υπολογιστή (δηλαδή C++, C#, VB, κ.λπ.).
Βασικές γνώσεις για τη μορφή ενός μηνύματος email με μορφή RFC/822.
Υπόδειξη
Συμβουλευτείτε το RFC 822 http://www.ietf.org/rfc/rfc0822.txt? αριθμός=822 και RFC 1341 http://www.ietf.org/rfc/rfc1341.txt? αριθμός=1341 Για περισσότερες πληροφορίες. Εάν κάνετε κωδικοποίηση σε C#, μια εξαιρετική δωρεάν βιβλιοθήκη είναι διαθέσιμη στη διεύθυνση http://www.codeproject.com/csharp/mime_project.asp.