لماذا حجم المرفق المقدم من واجهة برمجة Outlook خاطئ دائمًا؟

StackOverflow https://stackoverflow.com/questions/3078622

  •  28-09-2019
  •  | 
  •  

سؤال

في محاولة لاستخدام Outlook interop في C#، لاحظت شيئًا فضوليًا.

بمقارنة الحجم الحقيقي للملف المحفوظ والحجم الذي قدمته Outlook ، لاحظت أن الملف الحقيقي المحفوظ دائمًا أصغر من المتوقع Attachment.Size. يبدو أن الملفات المحفوظة صالحة ولا يتم اقتطاعها.

نتائج العينة http://www.freeimagehosting.net/uploads/224d342eba.png

إذن ، ما الخطأ في ذلك؟ هل هناك خطأ في Attachment.Size؟ أو ربما من المتوقع أن تعطي شيئًا آخر غير حجم المرفق؟

اعتقدت أنه يحول CR إلى CRLF ، بما في ذلك الملفات الثنائية ، والتي قد تفسر النفقات العامة ، ولكن بعض الملفات المرفقة في تنسيق نص خام مع CRLF ، لذلك هذه الفرضية خاطئة.


أول تحرير:

لا يكون ترميز BASE64 ، لأن ترميز BASE64 سيكون:

  • 4/3 نسبة. في حالتي ، لدي نسبة ليست بعيدة عن 1.0.
  • متناسب. ليس هذا هو الحال هنا: يحتوي ملف 1.9 ميغابايت على عام 181 بايت ، في حين أن ملف 27 كيلو بايت يحتوي على 3 كيلو بايت.

الآن ، بالنظر إلى النفقات العامة العشوائية تقريبًا في نطاق من 89 إلى 3658 بايت ، أوافق على أنه قد يكون بعض الرؤوس الغريبة.


التحرير الثاني:

لقد اختبرت هذا على مجموعة أكبر من الملفات. ما لاحظته هو أن الفرق بين حجم الملف الحقيقي والحجم المقدم من Outlook:

  • هو دائما صفر لمرفق .msg. لكن. MSG هو حالة خاصة للغاية ولديها سلوك غريب للغاية.
  • هو تأثر بواسطة كل من امتداد الملف وطول اسم الملف.
  • لنفس تمديد الملف ، في معظم الحالات ، ولكن ليس دائما, ، أكبر عندما يكون طول اسم الملف أكبر.

هنا مثال:

alt text http://www.freeimagehosting.net/uploads/a767d3cacf.png

IMHO ، Outlook يفعل شيئا ما مع اسم الملف ، نوع من الترميز الغريب للغاية ، ربما جيل من معرف فريد بناءً على اسم الملف. هذا يعني ذاك:

  • عندما يكون الملف أكبر ، يكون المعرف الفريد أكبر أيضًا.
  • عندما يحدث التصادم ، يحدث شيء ما للمعرف الفريد ، مما يجعله أكبر بكثير: الصف 18 لديه نفس اسم الملف مثل الصف 11 ، لكن الملف ليس هو نفسه ؛ من ناحية أخرى ، الصفوف 12 و 13 و 14 لها نفس الملف.
هل كانت مفيدة؟

المحلول

لست متأكدًا ، لكنني أفترض أنه قد يكون رؤوس MIME و/أو ترميز النفقات العامة. لمزيد من المعلومات ، انظر إلى هذه مقال ويكي حول BASE64 والبحث عن كلمة النفقات العامة.

تحرير: عذرًا ، لم أكن واضحًا جدًا ، قصدت مقالة BASE64 تمامًا كمثال على أنه قد يكون هناك علاقات عامة مرتبطة بالترميز ، وليس أنها كانت في الواقع BASE64 لأنه ، كما ذكر الآخرين ، قد يكون BASE64 أكبر بكثير من تلك الاختلافات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top