$stream = imap_open('{imap.qq.com:993/imap/ssl}' . imap_utf8_to_mutf7('INBOX'), $username, $password);
//获取所有的邮箱文件夹:收件箱、发件箱等
$result = imap_list($stream, '{imap.example.org}', '*');
foreach ($result as $name)
{
$folder []= imap_mutf7_to_utf8(str_replace('{imap.example.org}', '', $name));
}
return $folder;
//获取当前文件夹下的邮件ID
$search_string = '';
//$search_string .= 'SINCE "' . $this->begin_date . '"';
//$search_string .= 'BEFORE "' . $this->end_date . '"';
$search_string .= 'ALL';
$uid = imap_search($stream, $search_string, SE_UID);
return $uid;
//根据ID获取编号
$msgno = imap_msgno($stream, $uid);
return $msgno;
//根据编号获取邮件头信息
$header = imap_header($stream, $msgno);
//解码获取邮件主题
$subject = imap_mime_header_decode($header->subject);
$text = $subject[0]->text;
if ($subject[0]->charset != 'utf-8' && $subject[0]->charset != 'default')
{
if (in_array(strtoupper($subject[0]->charset),mb_list_encodings()))
{
$text = mb_convert_encoding($text,'UTF-8',$subject[0]->charset);
}
else
{
$ret = iconv($subject[0]->charset, "UTF-8", $text);
if ($ret)
{
$text =$ret;
}
}
}
//邮件标记(\\Seen,\\Flagged,\\Deleted,\\Answered)
imap_setflag_full($stream, $uid, "\\Flagged", ST_UID );
//邮件取消标记
$result = imap_clearflag_full($this->stream, $uid, "\\Seen", ST_UID );
//移到文件夹
$result = imap_mail_move($stream, $uid, imap_utf8_to_mutf7($folder), CP_UID);
//执行移动或删除(标记删除或移动文件夹操作后)
imap_expunge($result );
//获取邮件内容信息及结构(IMAP资源流,邮件编号)
$structure = imap_fetchstructure($stream, $msgno);
//获取邮件内容(IMAP资源流,邮件编号,内容分块)
$body = imap_fetchbody($stream, $msgno, $part_number);
//以下是获取邮件内容的具体代码
public function getBody($msgno, $structure = false, $part_number = false)
{
if (!$structure)
{
$structure = imap_fetchstructure($stream, $msgno);
}
if($structure)
{
if ($structure->type == 1)
{
$data = array();
foreach ($structure->parts as $number => $parts)
{
$number += 1;
if ($part_number)
{
$number = $part_number . '.' . $number;
}
$data[]= $this->getBody($msgno, $parts, $number);
}
if ($data)
{
return $data;
}
}
if (!$part_number)
{
$part_number = 1;
}
$body = imap_fetchbody($stream, $msgno, $part_number);
if ($structure->encoding == 3)
{
$body = imap_base64($body);
}
elseif ($structure->encoding == 4)
{
$body = imap_qprint($body);
}
if (is_array($structure->parameters) && empty($structure->ifdparameters) && ($structure->parameters)[0]->attribute == 'charset')
{
$body = iconv(($structure->parameters)[0]->value, 'utf-8//IGNORE', $body);
}
$data['part'] = $part_number;
$data['body'] = base64_encode($body);
$data['type'] = intval($structure->type);
$data['content_type'] = $structure->subtype;
if ($structure->ifdisposition)
{
if (isset($structure->dparameters) && is_array($structure->dparameters))
{
foreach ($structure->dparameters as $d)
{
if ($d->attribute == 'filename')
{
$data['filename'] = imap_utf8($d->value);
}
}
}
elseif (isset($structure->parameters) && is_array($structure->parameters))
{
foreach ($structure->parameters as $d)
{
if ($d->attribute == 'name')
{
$data['filename'] = imap_utf8($d->value);
}
}
}
}
return $data;
}
}
PHP MAILS IMAP 使用记录
最新推荐文章于 2022-03-15 18:30:07 发布