gpt4 book ai didi

php - 在 PHP 中发送电子邮件时发件人和名称中的编码问题?

转载 作者:搜寻专家 更新时间:2023-10-31 22:15:50 27 4
gpt4 key购买 nike

是什么导致了这个编码问题?我对 header 信息的编码是否正确,或者这可能是其他地方造成的?

我在这里发现了类似的问题:Email from PHP has broken Subject header encoding但从我正在阅读的内容来看,我认为我这样做是对的。

基本上有时我们的客户会发送用法语编写的电子邮件。它有效,但每隔一段时间我们就会遇到一些编码问题,我想知道我是否编码错误(我无法弄清楚)。

$from = '=?UTF-8?B?'.base64_encode($email['from_name']).'?= <'.$email['from_email'].'>';
$to = '=?UTF-8?B?'.base64_encode($email['to_name']).'?= <'.$email['to_email'].'>';

$get_param = array(
'Content-Type' => 'text/plain;charset=utf-8',
'Content-Transfer-Encoding' => '8bit');

上面的代码是我如何编码我的头信息,下面是发送:

$msg = $message_mime->get($get_param);

$headers = array (
'From' => $from,
'To' => $to,
'Reply-To' => $from,
'Subject' => utf8_decode($subject));

$headers = $message_mime->headers($headers);

$smtp = Mail::factory('smtp',
array ('host' => $smtp_settings['host'],
'auth' => true,
'username' => $smtp_settings['username'],
'password' => $smtp_settings['password']));

$mail = $smtp->send($to, $headers, $msg);

问题是他们收到的电子邮件来自:

Clientnamé de l'Ontario[=?UTF-8B?QXNzZW1ib(...)=?=]

感谢您的帮助:)

编辑:客户端的名称基本上使用与上述相同的字符。我的意思是该电子邮件应该来自“Clientnamé de l'Ontario”

最佳答案

您是否尝试将 base64_encode 替换为 utf8_encode

我会尝试替换:

$from = '=?UTF-8?B?'.base64_encode($email['from_name']).'?= <'.$email['from_email'].'>';
$to = '=?UTF-8?B?'.base64_encode($email['to_name']).'?= <'.$email['to_email'].'>';

与:

$email['from_name'] = utf8_encode($email['from_name']);
$email['to_name'] = utf8_encode($email['to_name']);

$from = $email['from_name'].' <' . $email['from_email'] . '>';
$to = $email['to_name']) . ' <' . $email['to_email'] . '>';

可能值得一试...

检测编码也有帮助(http://php.net/mb_detect_encoding/)?

关于php - 在 PHP 中发送电子邮件时发件人和名称中的编码问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6472396/

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