imap_fetchstructure()不返回parts对象

时间:2013-04-27 05:36:47

标签: php imap

我在imap_fetchstructure中有问题($ this-> stream,$ messageNumber)。 使用的某些电子邮件工作正常,另一封电子邮件无法正常工作,问题是:结构中缺少部件对象。

正如我所说的一些gmail帐户代码工作完美,而且我必须使用不工作来获取消息结构。但邮件信息,标题我没有问题,问题是如果我调用此功能

$ msg = $ imap-> returnEmailMessageArr($ val ['msgno']);

//之后调用此函数

private function returnMessageStructureObj($ messageNumber){

    return imap_fetchstructure($this->stream,$messageNumber);
}

对于未获取部件对象的gmail帐户,结构如下:

stdClass Object
(
    [type] => 0
    [encoding] => 4
    [ifsubtype] => 1
    [subtype] => HTML
    [ifdescription] => 0
    [ifid] => 0
    [lines] => 166
    [bytes] => 9904
    [ifdisposition] => 0
    [ifdparameters] => 0
    [ifparameters] => 0
    [parameters] => stdClass Object
        (
        )

)

请多多帮助我找到这个问题

2 个答案:

答案 0 :(得分:1)

我有同样的问题,我通过使用下面的代码解决,我只需要获取邮件的正文 其中$ val是UID,或者你也可以使用message_no

$structure = imap_fetchstructure($connection,$val,FT_UID);
if($structure->type!=0)
{
$data = imap_fetchbody($connection,$val,1,FT_UID);
    if ($structure->encoding==4)
        $data = quoted_printable_decode($data);
    elseif ($structure->encoding==3)
        $data = base64_decode($data);
    if (strtolower($structure->subtype)=='plain')
       $plainmsg .= trim($data) ."\n\n";
    else
    $htmlmsg .= $data ."<br><br>";
}

答案 1 :(得分:0)

->type 0的邮件被定义为text且没有任何部分。