┐─ تحليل الملف ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ┌
│ المطور : IETF (فريق هندسة الإنترنت)
│ الفئة : أخرى
│ نوع MIME : message/rfc822
┘ ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── └
ما هو ملف EML؟
EML هي صيغة ملف قياسية لرسائل البريد الإلكتروني المُخزَّنة، مبنية على معيار RFC 5322 (سابقاً RFC 2822) من IETF. على عكس صيغة MSG الثنائية الخاصة بـ Microsoft Outlook، EML ملف نصي قابل للقراءة بأي محرر نصوص، وتدعمه عملياً جميع بيئات البريد الإلكتروني.
بنية الملف: قسم “الرؤوس” (Headers) يحتوي على From وTo وDate وSubject والمعلومات التقنية، ثم سطر فارغ يفصله عن “جسم الرسالة” (Body). المرفقات والمحتوى HTML تُرمَّز بمعيار MIME (Multipurpose Internet Mail Extensions — RFC 2045) عادةً بترميز Base64 أو Quoted-Printable. هذا المعيار المفتوح يضمن التوافق بين عملاء البريد المختلفة منذ الثمانينيات.
كيفية فتح ملفات EML
- Mozilla Thunderbird (ويندوز، ماك، لينكس) — النقر المزدوج يفتح مباشرة
- Microsoft Outlook (ويندوز، ماك) — يفتح EML مع المرفقات
- Apple Mail (macOS، iOS) — النقر المزدوج يفتح في Mail
- eM Client (ويندوز) — بيئة بريد تجارية تدعم EML كاملاً
- أي محرر نصوص — قراءة الرؤوس والمحتوى النصي الخام
- MHT/EML Viewer (ويب) — أدوات إلكترونية لقراءة EML بالمتصفح
المواصفات التقنية
| الخاصية | القيمة |
|---|---|
| نوع MIME | message/rfc822 |
| المعيار | RFC 5322 (رؤوس وجسم البريد) |
| معيار المرفقات | RFC 2045-2049 (MIME) |
| الترميز | ASCII 7-bit أساساً (UTF-8 مع MIME) |
| ترميز المرفقات | Base64، Quoted-Printable |
| البنية | رؤوس + سطر فارغ + جسم الرسالة |
| الصيغ المضمنة | text/plain، text/html، multipart/mixed |
الاستخدامات الشائعة
- النسخ الاحتياطي والأرشفة: تصدير الرسائل المهمة من Gmail أو Outlook كـ EML للحفظ طويل الأمد
- ترحيل البريد الإلكتروني: نقل رسائل بين منصات مختلفة (من Yahoo Mail إلى Thunderbird مثلاً)
- الأدلة القانونية والجنائية: EML يحافظ على الرؤوس التقنية الأصلية (توقيت الإرسال، مسار الخادم) كأدلة في التحقيقات
- اختبار تطبيقات البريد: ملفات EML اختبارية لتطوير وأتمتة بيئات البريد
- الامتثال المؤسسي (Compliance): القطاع المالي والصحي يحتفظ بأرشيف EML لمتطلبات التدقيق
بنية ملف EML
From: ahmed@example.com
To: sara@example.com
Subject: تقرير المشروع
Date: Wed, 22 Jan 2025 14:30:00 +0300
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="boundary_abc123"
Message-ID: <abc123@mail.example.com>
--boundary_abc123
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
مرحباً سارة،
يرجى الاطلاع على تقرير المشروع المرفق.
مع التحية،
أحمد
--boundary_abc123
Content-Type: application/pdf; name="report.pdf"
Content-Disposition: attachment; filename="report.pdf"
Content-Transfer-Encoding: base64
JVBERi0xLjQKJeLjz9MKNCAwIG9iago8PC9MZW5ndGggMTkzCi9G...
--boundary_abc123--
معالجة EML برمجياً
import email
from email import policy
from pathlib import Path
# قراءة ملف EML
def parse_eml(filepath):
with open(filepath, 'rb') as f:
msg = email.message_from_binary_file(f, policy=policy.default)
print(f"المرسل: {msg['from']}")
print(f"المستلم: {msg['to']}")
print(f"الموضوع: {msg['subject']}")
print(f"التاريخ: {msg['date']}")
# استخراج المرفقات
for part in msg.walk():
if part.get_content_disposition() == 'attachment':
filename = part.get_filename()
data = part.get_payload(decode=True)
Path(filename).write_bytes(data)
print(f"تم حفظ المرفق: {filename}")
return msg
parse_eml('email.eml')
# عرض رؤوس EML فقط
head -50 email.eml
# استخراج المرفقات باستخدام munpack
munpack email.eml