加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – 如何使用UTF-8编码发送电子邮件?

发布时间:2021-07-06 05:19:46 所属栏目:大数据 来源: https://www.jb51.cc
导读:我继承了一个脚本,它以三种语言发送一些内容(所有内容都是相同的 – 重复)然而当收到内容字符时,我认为是UTF-8问题. 我是否正确我需要做的是将charset部分更改为utf-8,还是需要更改像7bit部分一样? 你可以看到我插入一个UTF-8参考的位置(尚未测试) 有一些东

我继承了一个脚本,它以三种语言发送一些内容(所有内容都是相同的 – 重复)然而当收到内容字符时,我认为是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--$boundarynContent-Type: text/plain; charset=UTF-8; format=flowednContent-Transfer-Encoding: 7bitnn" . $textContent;

// Add HTML body.
$body .= "n--$boundarynContent-Type: text/html; charset=ISO-8859-1; format=flowednContent-Transfer-Encoding: 7bitnn" . $htmlContent;

mail( $row["email"], "Update Your ArtsDB Listing", $body, $headers );

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

$body .= "n--$boundarynContent-Type: text/plain; charset=UTF-8; format=flowednContent-Transfer-Encoding: 8bitnn" . $textContent;

// Add HTML body.
$body .= "n--$boundarynContent-Type: text/html; charset=UTF-8; format=flowednContent-Transfer-Encoding: 8bitnn" . $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标准.此外,您不知道这将通过什么样的遗留程序.

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

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读