正在下载附件......但删除不是吗? 谁能告诉我什么是错的以及如何让它发挥作用?
<?php $hostname = '{xxxxxxpop3/notls}INBOX'; $username = 'xxx@gmail.com'; $password = 'password';
$savedirpath = "/root/Fax"; $type = 'ReadAttachment'; $obj = new $type; $obj->getdata($hostname, $username, $password, $savedirpath, $delete_emails = false);
class ReadAttachment {
function getdecodevalue ($message, $coding)
{
switch ($coding)
{
case 0:
case 1:
$message = imap_8bit($message);
break;
case 2:
$message = imap_binary($message);
break;
case 3:
case 5:
$message = imap_base64($message);
break;
case 4:
$message = imap_qprint($message);
break;
}
return $message;
}
function getdata ($hostname, $username, $password, $savedirpath, $delete_emails = false)
{
// make sure savepath has trailing slash(/)
$savedirpath = str_replace('\\', '/', $savedirpath);
if (substr($savedirpath, strlen($savedirpath) - 1) != '/')
{
$savedirpath .= '/';
}
$mbox = imap_open($hostname, $username, $password) or die("can't connect: " . imap_last_error());
$message = array();
$message["attachment"]["type"][0] = "text";
$message["attachment"]["type"][1] = "multipart";
$message["attachment"]["type"][2] = "message";
$message["attachment"]["type"][3] = "application";
$message["attachment"]["type"][4] = "audio";
$message["attachment"]["type"][5] = "image";
$message["attachment"]["type"][6] = "video";
$message["attachment"]["type"][7] = "other";
for ($jk = 1; $jk <= imap_num_msg($mbox); $jk++)
{
$structure = imap_fetchstructure($mbox, $jk, FT_UID);
$parts = (isset($structure->parts) ? $structure->parts : false);
$fpos = 2;
for ($i = 1; $i < count($parts); $i++)
{
$message["pid"][$i] = ($i);
$part = $parts[$i];
if ($part->disposition == "ATTACHMENT")
{
$message["type"][$i] = $message["attachment"]["type"][$part->type] . "/" . strtolower($part->subtype);
$message["subtype"][$i] = strtolower($part->subtype);
$ext = $part->subtype;
$params = $part->dparameters;
$filename = $part->dparameters[0]->value;
$mege = "";
$data = "";
$mege = imap_fetchbody($mbox, $jk, $fpos);
$filename = "$filename";
$fp = fopen($savedirpath . $filename, 'w');
$data = $this->getdecodevalue($mege, $part->type);
fputs($fp, $data);
fclose($fp);
$fpos += 1;
}
}
if ($delete_emails)
{
// imap_delete tags a message for deletion
imap_delete($mbox, $jk);
}
} // imap_expunge deletes all tagged messages if ($delete_emails) { imap_expunge($mbox); }
imap_close($mbox);
} }
?>
答案 0 :(得分:0)
添加
imap_expunge($jk);
后
imap_delete($mbox, $jk);
如果它不起作用,请尝试使用imap_errors查看最新情况。