带有UTF-8和变音符的PHP中的mail()

用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

背部