כיצד לפענח אימייל בפורמט MIME

רוב המיילים שנשלחים היום הם בפורמט MIME (Multipupose Internet Mail Extensions). זה מאפשר לשלוח מיילים עם טקסט רגיל וגרסאות טקסט עשיר/HTML, תמונות מוטבעות וקבצים מצורפים. ניתן להוסיף הרחבות MIME להודעה בפורמט RFC/822 סטנדרטי כך שתושג תאימות לאחור עם מערכות דואר ישנות יותר.

שלב 1

טען את תוכן הודעת הדואר האלקטרוני.

סרטון היום

שלב 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 יכול בעצמו להיות מרובה חלקים, עם כותרת "Content-Type" משלו ומחרוזת גבול. הקוד שלך חייב לנתח באופן רקורסיבי חלקי MIME עד שהוא מגיע לצמתי הצאצא.

שלב 7

חלק MIME יכול פשוט להיות קובץ מצורף בינארי. במקרה זה בדרך כלל תסופק כותרת שם קובץ, יחד עם קידוד ההעברה. BASE64 הוא סוג קידוד פופולרי. במקרה זה יש לפענח את כל גוף חלק ה-MIME BASE64. כדוגמה הנה כמה שורות ראשונות של תמונת JPG מצורפת:

=NextPart_003_01C755EF.43F2628D Content-Type: image/jpeg; name="testimage.jpg" Content-Transfer-Encoding: base64 Content-Description: testimage.jpg Content-Disposition: attachment; filename="testimage.jpg"

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

שלב 8

גוף ה-HTML של ההודעה צריך להיות במקטע MIME עם ContentType: Text/Html, בתוך מקטע ContentType: Multipart/Alternative MIME.

שלב 9

גוף הטקסט הפשוט של ההודעה צריך להיות בקטע MIME עם ContentType: Text/plain, בתוך מקטע ContentType: Multipart/Alternative MIME.

דברים שתצטרכו

  • ידע בשפת מחשב (כלומר C++, C#, VB וכו').

  • ידע בסיסי בפורמט של הודעת דואר אלקטרוני בפורמט 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.