3

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

正如我所说的一些 gmail 帐户,代码运行良好,而我必须使用的代码无法获取消息结构。但是邮件信息,标题我没有问题,问题是如果我调用这个函数

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

//之后这个函数被调用

私有函数 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
        (
        )

)

请帮我找到这个问题非常感谢

4

2 回答 2

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>";
}
于 2017-09-15T09:08:11.197 回答
0

带有->typeof的消息0被定义为text没有部分。

于 2013-08-07T02:18:37.603 回答