Php email sent with issues on subject chars in Outlook only

帅比萌擦擦* 提交于 2020-01-13 20:16:13

问题


Im sending a mail using php, and the subject of the mail has accents.

Im receiving weird characters in Outlook instead the accented chars. If i see the email in a web email client i see the subject perfect.

This is the code that im using to send the email:

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

How i could solve the issue, do i have to use another charset?


回答1:


The only reliable way to send e-mail is using plain 7 bit ASCII so you need to encode strings properly when you want to use anything else. In your case, [WEBSITE] áccent – tésts should be encoded as (e.g.) =?windows-1252?B?W1dFQlNJVEVdIOFjY2VudCCWIHTpc3Rz?=, where the string splits as:

=?windows-1252?B?W1dFQlNJVEVdIOFjY2VudCCWIHTpc3Rz?=
  ^            ^ ^
  |            | |
 Charset       | Data
               |
              Base64

Check:

echo base64_decode('W1dFQlNJVEVdIOFjY2VudCCWIHTpc3Rz'); // [WEBSITE] áccent – tésts

This is just an example of one of the possible ways to encode non-ASCII strings.

When sending e-mail, there are many little details like this that need attention. That's why sooner or later you end up using a proper e-mail package like Swift Mailer or PHPMailer.




回答2:


If there is a mix of encoding types, special characters are destroyed.

PHP messing with HTML Charset Encoding

PHP also has an option for encoding messages.

mb_language('uni'); // mail() encoding

PHP - Multibyte String

  • http://php.net/manual/en/mbstring.overload.php
  • http://php.net/manual/en/ref.mbstring.php


来源:https://stackoverflow.com/questions/7518024/php-email-sent-with-issues-on-subject-chars-in-outlook-only

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!