我继承了一个脚本,用三种语言发送一些内容(所有内容都是相同的 - 重复)然而当收到内容字符时,我认为是UTF-8问题.
我是否正确我需要做的是将charset部分更改为utf-8,还是需要更改像7bit部分一样?
你可以看到我插入一个UTF-8参考的位置(尚未测试)
这里有一些东西http://bitprison.net/php_mail_utf-8_subject_and_message似乎引用了基本编码,但我不确定我是否需要它?
// Contruct message body.
$body = "";
// Add message for non-mime clients.
$body .= "This is a multi-part message in MIME format.\n";
// Add text body.
$body .= "\n--$boundary\nContent-Type: text/plain; charset=UTF-8; format=flowed\nContent-Transfer-Encoding: 7bit\n\n" . $textContent;
// Add HTML body.
$body .= "\n--$boundary\nContent-Type: text/html; charset=ISO-8859-1; format=flowed\nContent-Transfer-Encoding: 7bit\n\n" . $htmlContent;
mail( $row["email"], "Update Your ArtsDB Listing", $body, $headers );
Run Code Online (Sandbox Code Playgroud)
我在这里看了另一篇文章的例子.
$body .= "\n--$boundary\nContent-Type: text/plain; charset=UTF-8; format=flowed\nContent-Transfer-Encoding: 8bit\n\n" . $textContent;
// Add HTML body.
$body .= "\n--$boundary\nContent-Type: text/html; charset=UTF-8; format=flowed\nContent-Transfer-Encoding: 8bit\n\n" . $htmlContent;
Run Code Online (Sandbox Code Playgroud)
您正在使用Content-Type: text/plain; charset=UTF-8告诉邮件阅读器这样的邮件部分使用UTF-8,这很好,但是...... $textContent变量包含什么?这是重要的一点.根据Content-Transfer-Encoding: 7bit它,它是一个7位编码,所以它不能是原始的UTF-8.但是,您没有使用任何通常用于电子邮件的7位编码.否则,会有一个(例如)Content-Transfer-Encoding: quoted-printable标题.
总而言之,您需要:
您也可以按原样发送原始UTF-8并设置,Content-Transfer-Encoding: 8bit但我不推荐它.您只需发送非常长的行就可能违反SMTP标准.此外,您不知道这将通过什么样的遗留程序.
电子邮件比看起来更难,这就是为什么迟早你最终会使用第三方库:PHP Mailer,Swift Mailer,PEAR Mail ......
| 归档时间: |
|
| 查看次数: |
14498 次 |
| 最近记录: |