gpt4 book ai didi

php - 无法使用 Zend 框架从收件箱中获取某些电子邮件的邮件正文?

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

我正在尝试阅读我的应用程序的电子邮件收件箱 - 我在这里使用的是 zend 框架。问题是我无法检索某些电子邮件的邮件正文。以下是我如何执行此操作的代码:

$mail = new Zend_Mail_Storage_Imap($mail_options);

$all_messages = array();

$page = isset($_GET['page'])?$_GET['page']:1;
$limit = isset($_GET['limit'])?$_GET['limit']:20;

$offset = (($page-1)*$limit)+1;

$end = ($page*$limit)>$c?$c:($page*$limit);
for ($i=$offset;$i<=$end;$i++){

$h2t = new html2text();
$h2t->set_allowed_tags('<a>');

if(!$mail[$i])
break;
else{
$one_message = $mail->getMessage($i);
$one_message->id = $i;
$one_message->UID = $mail->getUniqueId($i);

$one_message->parts = array();
$one_message->body = '';
$count = 1;
foreach (new RecursiveIteratorIterator($mail->getMessage($i)) as $ii=>$part) {

try {
$tpart = $part;
//$tpart->_content = '';
$one_message->parts[$count] = $tpart;
$count++;
// check for html body
if (strtok($part->contentType, ';') == 'text/html') {
$b = $part->getContent();

if($part->contentTransferEncoding == 'quoted-printable')
$b = quoted_printable_decode($b);

$one_message->html_body = $b;
$h2t->set_html($b);
$one_message->body = $h2t->get_text();
}

//check for text body

if (strtok($part->contentType, ';') == 'text/plain') {
$b = $part->getContent();

if($part->contentTransferEncoding == 'quoted-printable')
$b = quoted_printable_decode($b);

$one_message->text_body = $b;

$one_message->body = $b;//$part->getContent();
}

} catch (Zend_Mail_Exception $e) {
// ignore
}

}

$all_messages[] = $one_message;

}
}

问题是随机地有些消息甚至不返回文本正文或 html 正文。即使我使用 webvmail 客户端检查这些电子邮件也有邮件正文。我在这里错过了什么?

最佳答案

在遍历各个部分之前,您需要先检查邮件是否为多部分邮件。如果不是多部分,则正文将通过 $mail->getContent() 而不是部分公开。基本示例:

if ($mail->isMultiPart()) {
// Multipart messages handled here
foreach() {
// loop over parts
}
} else {
// Non multipart messages handled here

// default text_body
$one_message->text_body = $mail->getContent();

if (strtok($msg->contentType, ';') == 'text/html') {
// HTML email with no plain text alternative, set both values
$one_message->body = $mail->getContent();
$one_message->text_body = strip_tags($mail->getContent());
}
}

关于php - 无法使用 Zend 框架从收件箱中获取某些电子邮件的邮件正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2749772/

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