我使用php发送邮件,邮件的主题有重音符。
我在Outlook中收到奇怪的字符而不是重音字符。如果我在网络电子邮件客户端看到电子邮件,我会看到主题完美。
这是我用来发送电子邮件的代码:
$to = 'whateveremail@whatever.com';
$subject = '[WEBSITE] áccent – tésts';
$message = '<p>Test message</p>
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers.= 'From:equipothermomix@thermomix.com' . "\r\n";
$headers.= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
mail($to, $subject, $message , $headers);
我如何解决这个问题,我是否必须使用另一个字符集?
答案 0 :(得分:1)
发送电子邮件的唯一可靠方法是使用普通的7位ASCII,因此当您想要使用其他任何东西时,您需要正确编码字符串。在您的情况下,[WEBSITE] áccent – tésts
应编码为(例如)=?windows-1252?B?W1dFQlNJVEVdIOFjY2VudCCWIHTpc3Rz?=
,其中字符串分为:
=?windows-1252?B?W1dFQlNJVEVdIOFjY2VudCCWIHTpc3Rz?=
^ ^ ^
| | |
Charset | Data
|
Base64
检查:
echo base64_decode('W1dFQlNJVEVdIOFjY2VudCCWIHTpc3Rz'); // [WEBSITE] áccent – tésts
这只是编码非ASCII字符串的一种可能方法的示例。
发送电子邮件时,有许多这样的小细节需要注意。这就是为什么你迟早会使用Swift Mailer或PHPMailer等适当的电子邮件包。
答案 1 :(得分:1)
如果混合使用编码类型,则会销毁特殊字符。
PHP messing with HTML Charset Encoding
PHP还有一个编码消息的选项。
mb_language('uni'); // mail() encoding
PHP - 多字节字符串