gpt4 book ai didi

php - 为什么此邮件消息不能正确解码?

转载 作者:可可西里 更新时间:2023-10-31 23:56:41 25 4
gpt4 key购买 nike

我有这个代码。它来自 Zend Reading Mail示例。

$message = $mail->getMessage(1);

// output first text/plain part
$foundPart = null;
foreach (new RecursiveIteratorIterator($mail->getMessage(1)) as $part) {
try {
if (strtok($part->contentType, ';') == 'text/plain') {
$foundPart = $part;
break;
}
} catch (Zend_Mail_Exception $e) {
// ignore
}
}
if (!$foundPart) {
echo 'no plain text part found';
} else {
echo $foundPart->getContent();
}

我能得到的是消息,效果很好。但是试图将消息解码为可读的内容是行不通的。我试过 Zend_Mime、imap_mime 和 iconv,但没有成功。

这是我使用 $foundPart->getContent();

得到的示例

Hall=F3 heim=FAr

它应该说“Halló heimúr”

我想要的只是一些图书馆,在那里我可以在实践中“按下按钮,收到培根”。我的意思是,我只是想将库指向一个 POP3 邮箱,并以可读的形式(没有任何编码问题)和附件获取电子邮件。

imap_mime_header_decode() 给我一个包含相同数据的数组。
iconv_mime_decode() 做同样的事情

有没有人知道为什么会这样,或者有什么库可以抽象出来(PHP/Python 或 Perl)

最佳答案

我在学习如何使用 Zend_Mail 阅读电子邮件时遇到了一些类似的问题。您将需要添加 Zend_Mail 未实现的附加逻辑,例如解码编码电子邮件和转换字符集。这是我在找到纯文本部分后正在做的事情:

$content = $foundPart->getContent();

switch ($foundPart->contentTransferEncoding) {
case 'base64':
$content = base64_decode($content);
break;
case 'quoted-printable':
$content = quoted_printable_decode($content);
break;
}

//find the charset
preg_match('/charset="(.+)"$/', $foundPart->contentType, $matches);
$charset = $matches[1];

if ($charset == 'iso-8859-1') {
$content = utf8_encode($content); //convert to utf8
}

关于php - 为什么此邮件消息不能正确解码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/834152/

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