mail () en PHP kun UTF-8 kaj umlaŭtoj

Sendi retpoŝtojn per PHP plej bone efektiviĝas per potencaj klasoj kiel PHPMailer . Oportunaj envolvaĵaj funkcioj ebligas uzi UTF-8-enhavon, enigi bildojn kaj sendi ĉifritajn aldonaĵojn kun nur kelkaj linioj de kodo. Se vi volas konservi la supran kapon kaj uzi la PHP-funkcion mail () kontraŭe al la rekomendo, vi renkontos problemojn plej malfrue kiam vi uzas umlaŭtojn kaj UTF-8.


Post voki la funkcion kun

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

en kodita dosiero UTF-8 jam kaŭzas problemojn en la leterkesto: Outlook 2013 estas ankoraŭ kompleza kaj montras ĉion ĝuste:

poŝto1

Sed GMX ne pardonas la mankantajn titolojn kaj montras malbonan temon, sendinton kaj enhavon:

poŝto2

Se vi sendas la ĝustajn titolojn (ekzemple kun base64_encode), vi ricevas

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)
);

kaj fine, GMX ankaŭ montras ĝustan reprezentadon:

poŝto3

Reen