gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:09:58 26 4
gpt4 key购买 nike

我继承了一个脚本,该脚本以三种语言发送一些内容(所有内容都在相同的内容上 - 重复)但是当收到内容字符时,我认为这是一个 UTF-8 问题。

我需要做的只是将字符集部分更改为 utf-8,还是像 7 位部分一样需要更改其他任何内容?

你可以看到我在哪里插入了一个 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 );

我在此处查看了另一个帖子以获取示例。

$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 header 。

总结起来,你需要:

  1. 有一个包含有效 UTF-8 的源字符串。
  2. 选择传输的编码,例如 quoted_printable_encode() .
  3. 添加一个 header 来说明您选择了哪种传输编码。

您也可以按原样发送原始 UTF-8 并设置 Content-Transfer-Encoding: 8bit 但我不建议这样做。仅发送很长的行就有可能破坏 SMTP 标准。此外,您不知道这将经历什么样的遗留程序。

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

关于php - 如何使用 UTF-8 编码发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7009648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com