أنت تعمل على برنامج يستقبل مرفقات البريد الإلكتروني ويوزعها. مهمتك هي تنفيذ وظيفة `parse_email_from_fp`، التي تأخذ مؤشر ملف (`fp`) يشير إلى البريد الإلكتروني، ودليل إخراج اختياري (`outdir`) حيث يجب حفظ مرفقات البريد الإلكتروني. يجب أن تقوم الوظيفة باستخراج جميع المرفقات من البريد الإلكتروني وحفظها في دليل الإخراج المحدد.

يتضمن مقتطف التعليمات البرمجية المقدم بالفعل بعض الوظائف، ولكن يجب إكماله لتحقيق السلوك المطلوب. فيما يلي نظرة عامة على الخطوات التي يجب تنفيذها:

1. قم بإنشاء اسم ملف فريد لكل مرفق ليتم حفظه. يستخدم مقتطف التعليمات البرمجية الوقت الحالي لإنشاء اسم الملف، ولكنه يستبدل أيضًا أي أحرف جدولة بسلسلة فارغة.

2. تحقق مما إذا كان المرفق يحتوي على بيانات حمولة ثنائية (`att.get_payload(decode=True)`) أو إذا كان يلزم استخراجه من المحتوى (`att.get_content().as_bytes()`). إذا كانت بيانات الحمولة متاحة، فاستخدمها؛ وإلا، استخدم المحتوى.

3. قم بإنشاء دليل الإخراج إذا لم يكن موجودًا بعد (`os.makedirs(outdir,exist_ok=True)`).

4. افتح ملفًا جديدًا باسم الملف الذي تم إنشاؤه في دليل الإخراج في وضع الكتابة الثنائية ("wb"`).

5. قم بكتابة البيانات المرفقة بالملف.

مهمتك هي إكمال وظيفة `parse_email_from_fp` وفقًا للمتطلبات المحددة.

توقيع الوظيفة: `def parse_email_from_fp(fp: BinaryIO, outdir: str = "output") -> لا شيء:`
{"evolved_from": null, "kind": "synthetic", "source": "argilla/DistiCoder-dpo-binarized"}