regex للعثور على صور في خط في رسالة بريد إلكتروني نصي عادي

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

سؤال

يسمح بعض عملاء البريد للمرسل بوضع الصور مباشرة في جسم بريدهم الإلكتروني (بدلاً من مرفق تقليدي). عندما أتلقى إحدى رسائل البريد الإلكتروني هذه في طلبي ، يجب أن أكون قادرًا على النظر إليها فقط ال text/plain رسالة هيئة وتحديد أن المرسل مضمن صورة مضمنة.

أحاول صياغة regex للعثور على أصحاب الصور في text/plain رسالة رسالة حتى أتمكن من تبديلها <img> العلامات في الإصدار الخاص بي الخاص بـ HTML من الرسالة. (Wacky ، وأنا أعلم ، ولكن هذا هو الشرط).

المشكلة التي أجدها هي أن العناصر النائبة تختلف بناءً على عميل البريد المرسل. على سبيل المثال ، عند إرسالها من MS Outlook ، text/plain يبدو أن جسم الرسالة متعددة الأجزاء هكذا:

Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Check out this image:

[cid:image001.jpg@01CB50D4.769583B0]

Isn't it cool??

رسالة مماثلة تم إرسالها من Gmail مختلفة قليلاً:

Content-Type: text/plain; charset=ISO-8859-1

Check out this image:

[image: image001.jpg]

Isn't it cool??

ال text/html الجسم و image/jpeg جزء مع الصورة المشفرة BASE64 متابعة.

هل قام أي شخص بإجراء أي بحث حول هذا من قبل وتجميع قائمة أو قام ببناء regex على وجه التحديد لهذا الغرض؟

أدرك طريقة أكثر موثوقية لتحقيق هدفي هي النظر إلى text/html جزء من الرسالة-والتي يبدو أنها أكثر توحيدًا قليلاً من الاختبارات القليلة التي قمت بها-لكن لسوء الحظ ، لا يمكنني الوصول إلى ذلك في هذا السيناريو.

أنا أستخدم C#، إذا كان هذا مهمًا لأي شخص.

فيما يلي قائمة بنصوص نصية/صورة عاديات قمت بتجميعها حتى الآن:

  • Gmail: [image: filename.jpg]
  • Outlook 2007: [cid:filename.jpg@01CB50D4.769583B0]
  • Thunderbird 3.0.7: none
هل كانت مفيدة؟

المحلول

أود أن أقترح الذهاب مع جزء HTML. إذا كنت ترغب في العثور على عنصر نائب في جزء من النص العادي ، فيجب أن يكون هذا التعبير المنتظم البسيط كافياً (PCRE):

^\[.*\]$

على الأقل هذا هو ما يناسب أمثلة أعلاه. إذا كنت ترغب في تحديد اسم الصورة ، فستكون هناك حاجة إلى تعبير معقد بعض الشيء. ضع في اعتبارك أن هذا سوف يلتقط جميع الخطوط التي تبدأ بـ [وتنتهي مع] بغض النظر عن المحتويات. إذا كنت ترغب في الحد من regexp في بعض أنواع الملفات ، فحاول:

^\[.*(\.jpg|\.jpeg|\.png|\.gif|\.bmp).*\]$i

أمثلة ستعمل في بيرل ، لأنك لم تذكر اللغة ...

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