PHP MAILS IMAP 使用记录

$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;
			}
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值