test.php
3.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<?php
// 实例一个配置
$config = (new \Lib\Imap\ImapConfig())
// 邮箱
->setEmail('zhlong0616@163.com')
// 密码
->setPassword(base64_decode('VEVKSVdPTUJQS09TSFJHSg=='))
// 必须是 协议+域名+端口
->setHost('ssl://imap.163.com:993');
// 获取一个imap连接 必须传入 \Lib\Imap\ImapConfig类
// 返回的是 Lib\Imap\Imap 类
$imap = \Lib\Imap\ImapPool::get($config);
// 登录 必须先登录
$login = $imap->login();
if($login->isOk()){// 登录成功
/******************** start 文件夹 ************************/
// 获取文件夹对象
$folders = $imap->getFolders();
// 获取 所有目录
foreach ($folders->all() as $folder){
$folder->getParseFolder(); // 获取解析过后的目录名称
$folder->folder; // 获取没有解析的目录名称
}
// 获取顶级目录
foreach ($folders->getTopFolder() as $folder){
$childs = $folder->getChild(); // 获取 子级目录
foreach ($childs as $child){
$child->getChild();
}
}
// 创建一级文件夹
$imap->folder('你好',false)->create();
// 创建 二级文件夹
$imap->folder('你好/大家好',false)->create();
// 删除 你好 文件夹
$imap->folder('你好',false)->delete();
// 把 你好 改成 我好
$imap->folder('你好',false)->rename('我好',false);
/******************** end 文件夹 ************************/
/************************ start 获取某个文件夹下面的邮件 *******************************/
// 选择文件夹 预备读取 使用分页 查询
$msgs = $imap->folder('INBOX')->msg()->forPage()->get();
// 1.使用foreach
foreach ($msgs as $msg){
/** @var \Lib\Imap\Parse\MessageItem $msg **/
}
// 2.使用 each
$msgs->each(function (\Lib\Imap\Parse\MessageItem $msg){
$msg->msgno;// 邮件编号
$msg->uid;// 邮件唯一id
$msg->size;// 邮件大小
$msg->date;// 邮件内部时间,也就是服务器收到邮件的时间
$msg->flags;// 邮件标签 已读,已回,星标,删除,草稿 最近
$msg->isAnswered();//已回
$msg->isDeleted();//删除
$msg->isDraft();//草稿
$msg->isFlagged();//星标
$msg->isRecent();//最近
$msg->isSeen();// 已读
/** 头部信息 @see \Lib\Imap\Parse\Header */
$msg->header->getSubject();// 已解析的主题
$msg->header->getFrom();// 已解析的发件人
$msg->header->getTo();// 已解析的收件人
// 获取某个字段
$msg->header->get('subject');
// html内容
$msg->body->getHtml();
// 纯文本内容
$msg->body->getText();
// 获取附件
foreach ($msg->body->getAttachment() as $attachment){
// 存起来
file_put_contents($attachment->get('filename'),$attachment->get('body'));
}
});
// 搜索邮箱
$msg = $imap->folder('INBOX')->msg()->search(
// 搜索未读 并且 主题有 你好 的
(new \Lib\Imap\ImapSearch())
->seen(false)
->subject('你好')
)->get();
/*******************************************************/
}else{
// 登录失败 获取错误消息 $login->getMessage()
throw new Exception($login->getMessage());
}