【问题标题】:How do I extract the content from zend mail imap?如何从 zend 邮件 imap 中提取内容?
【发布时间】:2011-08-28 20:12:40
【问题描述】:

我正在尝试编写一个脚本,它可以在没有自定义标志的情况下下载某个文件夹中的所有邮件,我们现在将标志称为 $aNiceFlag;在我取回一封邮件后,我想用 $aNiceFlag 标记它。然而,在解决标志问题之前,我现在无法从邮件中提取我需要的内容。

这是我需要的信息:

  • 发件人(电子邮件和姓名,如果可能)
  • 主题
  • 接收者
  • 纯文本正文(如果只有 html 可用,我会尝试将其从 html 转换为纯文本)
  • 发送时间

我可以使用$mailObject->subject 轻松获取主题。我正在查看Zend Documentation,但这让我有点困惑。

这是我现在的代码,我不应该回显内容,但这只是现在测试时:

$this->gOauth = new GoogleOauth();
$this->gOauth->connect_imap();
$storage = new Zend_Mail_Storage_Imap(&$this->gOauth->gImap);
$storage->selectFolder($this->label);
foreach($storage as $mail){
    echo $mail->subject();
    echo strip_tags($mail->getContent());
}

我正在使用 google oAuth 访问邮件。 $this->label 是我要获取的文件夹。现在这很简单,但在使它变得复杂之前,我想弄清楚基本原理,例如将上面列出的所有数据提取到数组中的单独键中的合适方法。

【问题讨论】:

    标签: php zend-framework imap zend-mail


    【解决方案1】:

    您可以使用与主题相同的技术轻松获取发送者、接收者和日期的标题,但是实际的纯文本正文有点棘手,这里有一个示例代码可以满足您的需求

        $this->gOauth = new GoogleOauth();
        $this->gOauth->connect_imap();
        $storage = new Zend_Mail_Storage_Imap(&$this->gOauth->gImap);
        $storage->selectFolder($this->label);
        // output first text/plain part
        $foundPart = null;
        foreach($storage as $mail){
            echo '----------------------<br />'."\n";
            echo "From: ".utf8_encode($mail->from)."<br />\n";
            echo "To: ".utf8_encode(htmlentities($mail->to))."<br />\n";
            echo "Time: ".utf8_encode(htmlentities(date("Y-m-d H:s" ,strtotime($mail->date))))."<br />\n";
            echo "Subject: ".utf8_encode($mail->subject)."<br />\n";
    
            foreach (new RecursiveIteratorIterator($mail) 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 <br /><br /><br /><br />\n\n\n";
            } else {
                echo "plain text part: <br />" .
                        str_replace("\n", "\n<br />", trim(utf8_encode(quoted_printable_decode(strip_tags($foundPart)))))
                    ." <br /><br /><br /><br />\n\n\n";
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-05
      • 2011-07-07
      • 1970-01-01
      • 2016-04-20
      • 2012-10-09
      • 2012-10-10
      • 2011-05-04
      • 2012-02-24
      相关资源
      最近更新 更多