Zend Framework中是否有任何课程允许我轻松阅读电子邮件?
Zend_Mail类允许我轻松获取标题,主题和内容正文。但是将所有内容转换为UTF-8和人类可读的格式仍然很痛苦。
或者我做错了什么?据我所知,Zend Framework不允许我轻松获得我可以使用的UTF-8字符串,我仍然需要进行一些后期处理。正确?
答案 0 :(得分:0)
关键是你需要迭代Message中的部分并找到文本。获得后,您可以使用quoted_printable_decode
以有用的方式获取文本本身。
这是一些粗略且准备好的代码,可以使用Zend_Mail读取IMAP电子邮箱:
<?php
$mail = new Zend_Mail_Storage_Imap(array(
'host' => EMAIL_ACCOUNT_HOST,
'user' => EMAIL_ACCOUNT_USERNAME,
'password' => EMAIL_ACCOUNT_PASSWORD,
));
echo (int)$mail->countMessages() . " messages found\n";
foreach ($mail as $message) {
$from = $message->getHeader('from');
$subject = trim($message->subject);
$to = trim($message->to);
$body = getBody($message);
// do something with message here
}
function getBody(Zend_Mail_Message $message)
{
// find body
$part = $message;
$isText = true;
while ($part->isMultipart()) {
$foundPart = false;
$iterator = new RecursiveIteratorIterator($message);
foreach ($iterator as $part) {
// this detection code is a bit rough and ready!
if (!$foundPart) {
if (strtok($part->contentType, ';') == 'text/html') {
$foundPart = $part;
$isText = false;
break;
} else if (strtok($part->contentType, ';') == 'text/plain') {
$foundPart = $part;
$isText = true;
break;
}
}
}
if($foundPart) {
$part = $foundPart;
break;
}
}
$body = quoted_printable_decode($part->getContent());
}