mail () در PHP با UTF-8 و umlauts

ارسال ایمیل با PHP با کلاسهای قدرتمندی مانند PHPMailer بهتر انجام می شود . عملکردهای راحت بسته بندی امکان استفاده از محتوا در UTF-8 ، جاسازی تصاویر و ارسال پیوست های رمزگذاری شده فقط با چند خط کد را فراهم می کند. اگر می خواهید هزینه اضافی خود را پس انداز کنید و برخلاف توصیه ، از نامه عملکرد PHP () استفاده کنید ، حداکثر در هنگام استفاده از umlauts و 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

بازگشت