我遇到了一些问题,并且想知道是否有人能指出我正确的方向,我正在编写一个解析电子邮件并提取特定信息的电子邮件解析器。
我的问题是第2步:
我预先通过每个电子邮件结构,如果它有两个以上的部分我尝试解码附件并将其保存到磁盘,但这是失败的。
如果我尝试简单地使用file_put_contents我得到 0 KB文件,我已经给了wamp服务器用户完全权限,所以我不想它&#39 ; s文件权限,我已经验证我可以使用mkdir编写。
file_put_contents(APPPATH . "attachments/". $partofpart->dparameters[0]->value, $partofpart); //$partofpart is part[2] of the full email structure
所以我尝试使用file_put_contents
解码部件并保存解码部分$attachment = base64_decode($partofpart);
var_dump($attachment);
//then save the attachment with attachment name
file_put_contents(APPPATH . "attachments/". $partofpart->dparameters[0]->value, $attachment);
但是这会返回一个错误,说base64_decode需要一个字符串而不是一个对象,如何将我的email-part-attachment转换为一个字符串供base64_decode使用?
即使只是写出来,我觉得我错过了一些明显的东西,不应该需要额外的步骤。
我是否认为是附件?所有参数都让我相信,类型,子类型,大小等都适用于附件。
链接到整个scraper model
感谢阅读和任何帮助。
以下是符合类型/编码/处置检查的部分vardump
我已经解决了这个问题,我没有把实际的pdf取回给它的结构
所以我编写了一个函数来检索特定电子邮件的正文,然后用imap_base64编码然后最后编译file_put_contents。
function getAttachment($msg_index, $part)
{
$mailbody = imap_fetchbody($this->conn,$msg_index,$part);
return $mailbody;
}
$attachment = imap_base64($this->email_model->getAttachment($email['index'], "2"));
//mkdir(APPPATH . "attachmentzs/");
//then save the attachment with attachment name
file_put_contents(APPPATH . "attachments/". $partofpart->dparameters[0]->value, $attachment);