mail () بلغة PHP مع UTF-8 و umlauts

من الأفضل تنفيذ إرسال رسائل البريد الإلكتروني باستخدام PHP مع الفئات القوية مثل PHPMailer . وظائف الغلاف المريحة تجعل من الممكن استخدام محتوى UTF-8 ، وتضمين الصور وإرسال المرفقات المشفرة ببضعة سطور من التعليمات البرمجية. إذا كنت تريد توفير النفقات العامة ، وخلافًا للتوصية ، استخدم وظيفة PHP mail () ، فستواجه مشكلات عند استخدام علامات تغير الألوان و UTF-8 على أبعد تقدير.


بعد استدعاء الوظيفة مع

mail(
   "vieldav@gmx.de",                          // Empfänger
   "ä ö ü ß",                                 // Betreff
   "ä ö ü ß",                                 // Inhalt
   "From: ä ö ü ß <david@vielhuber.de>"       // Header (Absender)
);

في ملف مشفر UTF-8 يؤدي بالفعل إلى مشاكل في البريد الوارد: لا يزال Outlook 2013 لطيفًا ويعرض كل شيء بشكل صحيح:

البريد 1

لكن GMX لا تغفر الرؤوس المفقودة وتعرض موضوعًا ومرسلًا ومحتوى سيئًا:

بريد 2

إذا قمت بإرسال الرؤوس الصحيحة (على سبيل المثال مع base64_encode) ، فستحصل على

mail(
   "vieldav@gmx.de",                          				  // Empfänger
   "=?UTF-8?B?".base64_encode("ä ö ü ß")."?=",                            // Betreff
   "ä ö ü ß",                                 			 	  // Inhalt
   "Content-type: text/plain; charset=utf-8\r\n"
  ."From: =?UTF-8?B?".base64_encode("ä ö ü ß")."?=<david@vielhuber.de>"   // Header (Absender)
);

وأخيرًا ، يُظهر GMX أيضًا تمثيلًا صحيحًا:

البريد 3

عودة