php在utf8怎么运行,php – 如何使用UTF-8编码发送电子邮件?

我继承了一个脚本,它以三种语言发送一些内容(所有内容都是相同的 – 重复)然而当收到内容字符时,我认为是UTF-8问题.

我是否正确我需要做的是将charset部分更改为utf-8,还是需要更改像7bit部分一样?

你可以看到我插入一个UTF-8参考的位置(尚未测试)

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

我在这里看了另一篇文章的例子.

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

解决方法:

您使用的是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的源字符串.

>选择传输的编码,例如quoted_printable_encode().

>添加标题以告知您选择的传输编码.

您也可以按原样发送原始UTF-8并设置Content-Transfer-Encoding:8bit但我不推荐它.您只需发送非常长的行就可能违反SMTP标准.此外,您不知道这将通过什么样的遗留程序.

电子邮件比看起来更难,这就是为什么迟早你最终使用第三方库:PHP Mailer,Swift Mailer,PEAR Mail ……

标签:php,utf-8,email

来源: https://codeday.me/bug/20191001/1838364.html

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值