php imap 附件,学习猿地-PHP-imap 使用参考

1. 相关资料

php-imap 用于获取邮件 ,但是没有详细的官方文档 ,在这里整理一份分享给大家composer require php-imap/php-imap

2. php-imap 成员

2.1 构造方法参数

说明

示例$imapPath

服务地址

{imap.163.com:143}

$login

登录名

email@163.com

$password

登录密码

***

$attachmentsDir

附件存储目录 ,如果设置了这个参数 ,邮件中的附件会自动存储到这个目录

-

$serverEncoding

服务器使用的字符编码

-/**

* @param string $imapPath

* @param string $login

* @param string $password

* @param string $attachmentsDir

* @param string $serverEncoding

*

* @throws InvalidParameterException

*/

public function __construct($imapPath, $login, $password, $attachmentsDir = null, $serverEncoding = 'UTF-8')

{

$this->imapPath = trim($imapPath);

$this->imapLogin = trim($login);

$this->imapPassword = $password;

$this->setServerEncoding($serverEncoding);

if (null != $attachmentsDir) {

$this->setAttachmentsDir($attachmentsDir);

}

}

2.2 邮件信息相关的成员成员

所属类

说明

示例searchMailbox($criteria = 'ALL', $disableServerEncoding = false)

PhpImap\Mailbox

根据 $criteria 获取邮箱中的邮件列表 ,可用的 $criteria 参数参见 https://www.php.net/imap_search

-

getMail($mailId, $markAsSeen = true)

PhpImap\Mailbox

根据邮件的 $mailId 获取邮件数据 ,如果获取了附件并设置了附件的默认存储路径 ,它会自动将邮件附件保存到该路径 ,返回 PhpImap\IncomingMail 实例

-

getMailHeader($mailId)

PhpImap\Mailbox

根据邮件的 $mailId 获取邮件数据 ,返回 PhpImap\IncomingMailHeader 实例

-

getMailsInfo(array $mailsIds)

PhpImap\Mailbox

获取一组邮件的信息

Array ( [0] => stdClass Object ( [subject] => test [from] => 苍松 拔雨 [to] => "cangsongbayu@163.com" [date] => Sun, 5 Jan 2020 22:39:23 +0000 [message_id] => [size] => 7364 [uid] => 1524851185 [msgno] => 1 [recent] => 0 [flagged] => 0 [answered] => 0 [deleted] => 0 [seen] => 0 [draft] => 0 [udate] => 1578263965 ) )

$textPlain

PhpImap\IncomingMail

以普通文本格式返回邮件内容

-

$textHtml

PhpImap\IncomingMail

以 HTML 格式返回邮件内容

-

embedImageAttachments()

PhpImap\IncomingMail

将 $textHtml 中的图片转为 base64

-

getRawMail($msgId, $markAsSeen = true)

PhpImap\Mailbox

返回邮件的原始数据信息

-

getMailMboxFormat($mailId)

PhpImap\Mailbox

以 MBOX 格式返回邮件内容

-

2.3 邮件附件相关的成员成员

所属类

说明

示例hasAttachments()

PhpImap\IncomingMail

如果邮件中有附件返回 true

-

getAttachments()

PhpImap\IncomingMail

返回一个数组 ,数组的每一项都是 PhpImap\IncomingMailAttachment 实例

-

removeAttachment($id)

PhpImap\IncomingMail

根据附件的 id 删除附件( 不会删除文件 )

-

setAttachmentsIgnore($attachmentsIgnore)

PhpImap\Mailbox

设置是否获取邮件中的附件

-

getAttachmentsIgnore()

PhpImap\Mailbox

返回 bool ,true 表示是否自动获取附件

-

setAttachmentsDir($attachmentsDir)

PhpImap\Mailbox

设置附件的存储路径

-

getAttachmentsDir()

PhpImap\Mailbox

返回当前设置的附件存储路径

-

$id

PhpImap\IncomingMailAttachment

附件的 id

08fda0244b5397e030ee401fd2bea5b24f78a72b

$name

PhpImap\IncomingMailAttachment

附件的文件名称

imap.jpg

$file_path

PhpImap\IncomingMailAttachment

附件的存储路径 ,访问这个值时应该使用属性名 filePath ,否则会抛出一个 Notice

/var/www/uploads/1524851183_08fda0244b5397e030ee401fd2bea5b24f78a72b_2.jpg

getMimeType()

PhpImap\IncomingMailAttachment

返回附件的 MIME 类型

image/jpeg; charset=binary

getContents()

PhpImap\IncomingMailAttachment

返回附件的内容

-

setFilePath($filePath)

PhpImap\IncomingMailAttachment

设置附件的存储路径 ,即 $file_path

-

saveToDisk()

PhpImap\IncomingMailAttachment

根据 $file_path 将附件存储到磁盘 ,成功返回 true

-

2.4 邮箱信息相关的成员成员

所属类

说明

示例getListingFolders($pattern = '*')

PhpImap\Mailbox

返回邮箱中列出的文件夹列表

-

countMails()

PhpImap\Mailbox

获取邮箱中邮件的数量

-

getMailboxes($search = '*')

PhpImap\Mailbox

返回邮箱中所有的文件夹列表

-

checkMailbox()

PhpImap\Mailbox

返回当前邮箱相关的信息

-

2.5 设置邮件的成员成员

所属类

说明

示例deleteMail($mailId)

PhpImap\Mailbox

根据 $mailId 删除邮件

-

setFlag(array $mailsIds, $flag)

PhpImap\Mailbox

设置一组邮件的标记 ,可用的值有 RFC2060 规定的 \Seen 、\Answered 、\Flagged 、 \Deleted 、\Draft

-

clearFlag(array $mailsIds, $flag)

PhpImap\Mailbox

删除一组邮件的标记 ,可用的值有 RFC2060 规定的 \Seen 、\Answered 、\Flagged 、 \Deleted 、\Draft

-

markMailsAsImportant(array $mailId)

PhpImap\Mailbox

将邮件标记为 \Flagged

-

markMailAsRead($mailId)

PhpImap\Mailbox

将邮件标记为 \Seen

-

markMailsAsRead(array $mailId)

PhpImap\Mailbox

将一组邮件标记为 \Seen

-

markMailAsUnread($mailId)

PhpImap\Mailbox

删除邮件的标记 \Seen

-

markMailsAsUnread(array $mailId)

PhpImap\Mailbox

删除一组邮件的标记 \Seen

-

2.6 连接相关的成员成员

所属类

说明

示例disconnect()

PhpImap\Mailbox

与 IMAP 服务器断开连接

-

getLogin()

PhpImap\Mailbox

返回 IMAP 登录信息 ,通常是邮件地址

cangsongbayu@163.com

getImapPath()

PhpImap\Mailbox

返回 IMAP 路径

{imap.163.com:143}

2.7 其他配置相关的成员成员

所属类

说明

示例setServerEncoding($serverEncoding)

PhpImap\Mailbox

设置服务器使用的编码

-

getServerEncoding()

PhpImap\Mailbox

返回当前设置的服务器编码

-

3. IncomingMailHeader

getMailHeader() 方法会返回邮件的 IncomingMailHeader 实例 ,下面看可以从 IncomingMailHeader 中提取到哪些信息属性

说明

示例id

邮件的 id

1524851188

date

邮件的发送时间

2020-01-07T02:04:27+08:00

headersRaw

邮件的原数据

-

headers

邮件原数据中提取出的数据

-

subject

邮件的主题

-

fromHost

发件人 host

qq.com

fromName

发件人名称

-

fromAddress

发件人邮箱

cangsongbayu@qq.com

senderHost

收件人 host

163.com

senderName

收件人名称

-

senderAddress

收件人邮箱

cangsongbayu@163.com

to

收件人数组

[to] => Array([cangsongbayu@163.com] => cangsongbayu)

cc

抄送人数组

[cc] => Array([cangsongbayu@163.com] => cangsongbayu)

bcc

密送人数组

[bcc] => Array()

replyTo

回复人数组

[replyTo] => Array([1228950011@qq.com] => cangsongbayu)

headers->date

邮件的发送时间

Tue, 7 Jan 2020 02:42:27 +0800

headers->subject

邮件的主题 ,可能未解码

=?gb18030?B?suLK1MPXy8mzrcvN?=

headers->toaddress

收件人名称 ,可能未解码

=?gb18030?B?Y2FuZ3NvbmdiYXl1?=

headers->to

收件人数组 ,数组中每一项都是 stdClass ,分别有 personal 、mailbox 、host 三个属性

Array ( [0] => stdClass Object ( [personal] => =?gb18030?B?Y2FuZ3NvbmdiYXl1?= [mailbox] => cangsongbayu [host] => 163.com ) )

headers->fromaddress

发件人名称 ,可能未解码

?gb18030?B?stTLybDO0+o=?= 1228950011@qq.com

headers->from

发件人数组 ,数组中每一项都是 stdClass ,分别有 personal 、mailbox 、host 三个属性

Array ( [0] => stdClass Object ( [personal] => =?gb18030?B?stTLybDO0+o=?= [mailbox] => 1228950011 [host] => qq.com ) )

headers->ccaddress

抄送人名称 ,可能是未解码

?gb18030?B?Y2FuZ3NvbmdiYXl1?=

headers->cc

抄送人数组 , 数组中每一项都是 stdClass ,分别有 personal 、mailbox 、host 三个属性

Array ( [0] => stdClass Object ( [personal] => =?gb18030?B?Y2FuZ3NvbmdiYXl1?= [mailbox] => cangsongbayu [host] => 163.com ) )

headers->reply_toaddress

回复人名称 ,可能未解码

?gb18030?B?stTLybDO0+o=?= 1228950011@qq.com

headers->reply_to

回复人数组 , 数组中每一项都是 stdClass ,分别有 personal 、mailbox 、host 三个属性

Array ( [0] => stdClass Object ( [personal] => =?gb18030?B?stTLybDO0+o=?= [mailbox] => 1228950011 [host] => qq.com ) )

headers->senderaddress

发件人名称 ,可能未解码

?gb18030?B?stTLybDO0+o=?= 1228950011@qq.com

headers->sender

发件人数组 , 数组中每一项都是 stdClass ,分别有 personal 、mailbox 、host 三个属性

Array ( [0] => stdClass Object ( [personal] => =?gb18030?B?stTLybDO0+o=?= [mailbox] => 1228950011 [host] => qq.com ) )

4. 返回值一览

4.1 PhpImap\Mailbox 的 checkMailbox() 的返回值

返回一个 stdClassstdClass Object

(

[Date] => Mon, 6 Jan 2020 06:45:48 +0800

[Driver] => imap

[Mailbox] => {imap.163.com:143/imap/tls/user="cangsongbayu@163.com"}INBOX

[Nmsgs] => 2

[Recent] => 2

)成员

说明

示例Date

根据 RFC2822 格式化的当前系统时间

Mon, 6 Jan 2020 05:46:26 +0800

Dirver

访问此邮箱使用的协议

POP3 、IMAP 、NNTP

MailBox

邮箱名称

{imap.163.com:143/imap/tls/user="cangsongbayu@163.com"}INBOX

Nmsgs

邮箱中的邮件数量

1

Recent

邮箱中最近的邮件数量

0

4.2 PhpImap\Mailbox 的 getMailsInfo(array $mailsIds) 的返回值

返回的数组中每一项都是 stdClass ,包含了对应邮件的一些描述信息Array

(

[0] => stdClass Object

(

[subject] => test

[from] => 苍松 拔雨

[to] => "cangsongbayu@163.com"

[date] => Sun, 5 Jan 2020 22:39:23 +0000

[message_id] =>

[size] => 7364

[uid] => 1524851185

[msgno] => 1

[recent] => 0

[flagged] => 0

[answered] => 0

[deleted] => 0

[seen] => 0

[draft] => 0

[udate] => 1578263965

)

[1] => stdClass Object

(

[subject] => test subject

[from] => " 苍松拔雨 " <1228950011@qq.com>

[to] => " cangsongbayu "

[date] => Mon, 6 Jan 2020 06:41:46 +0800

[message_id] =>

[size] => 2324

[uid] => 1524851186

[msgno] => 2

[recent] => 0

[flagged] => 0

[answered] => 0

[deleted] => 0

[seen] => 0

[draft] => 0

[udate] => 1578264108

)

)成员

说明

示例subject

邮件主题

-

from

发件人名称

-

sender

发件人邮箱 ,不一定有

-

to

收件人 ,不一定是邮箱地址

-

date

发送时间

Mon, 6 Jan 2020 06:41:46 +0800

size

邮件的字节大小

-

uid

邮箱中邮件的 uid

-

msgno

邮箱中的邮件序列号

-

recent

表示邮件是否被标记为 \Recent

-

flagged

表示邮件是否被标记为 \Flagged

-

answered

表示邮件是否被标记为 \Answered

-

deleted

表示邮件是否被标记为 \Deleted

-

seen

表示邮件是否被标记为 \Seen

-

draft

表示邮件是否被标记为 \Draft

-

udate

Unix 时间戳格式的 date

-

4.3 PhpImap\Mailbox 的 getListingFolders($pattern = '*') 的返回值

返回邮箱中列出的文件夹列表Array

(

[0] => {imap.163.com:143}INBOX

[1] => {imap.163.com:143}草稿箱

[2] => {imap.163.com:143}已发送

[3] => {imap.163.com:143}已删除

[4] => {imap.163.com:143}垃圾邮件

[5] => {imap.163.com:143}病毒文件夹

)

4.4 PhpImap\Mailbox 的 getMailboxes() 的返回值

返回邮箱中所有的文件夹列表Array

(

[0] => Array

(

[fullpath] => {imap.163.com:143}INBOX

[attributes] => 0

[delimiter] => /

[shortpath] => INBOX

)

[1] => Array

(

[fullpath] => {imap.163.com:143}草稿箱

[attributes] => 0

[delimiter] => /

[shortpath] => 草稿箱

)

[2] => Array

(

[fullpath] => {imap.163.com:143}已发送

[attributes] => 0

[delimiter] => /

[shortpath] => 已发送

)

[3] => Array

(

[fullpath] => {imap.163.com:143}已删除

[attributes] => 0

[delimiter] => /

[shortpath] => 已删除

)

[4] => Array

(

[fullpath] => {imap.163.com:143}垃圾邮件

[attributes] => 0

[delimiter] => /

[shortpath] => 垃圾邮件

)

[5] => Array

(

[fullpath] => {imap.163.com:143}病毒文件夹

[attributes] => 0

[delimiter] => /

[shortpath] => 病毒文件夹

)

)

5. 参数补充说明

5.1 PhpImap\Mailbox 的 setFlag(array $mailsIds, $flag) 参数说明参数

说明

示例$mailsIds

邮件的 $mailId 组成的数组

-

$flag

可用的值有 RFC2060 规定的 \Seen 、\Answered 、\Flagged 、 \Deleted 、\Draft

-标记

说明

示例\Seen

将邮件标记为已读

$mailBox->setFlag($mailsIds, '\Seen')

\Deleted

将邮件标记为已删除

$mailBox->setFlag($mailsIds, '\Deleted')

\Draft

将邮件标记为草案

$mailBox->setFlag($mailsIds, '\Draft')

\Flagged

将邮件标记为重要邮件

$mailBox->setFlag($mailsIds, '\Flagged')有错误的地方欢迎指出 ,或者补充也可以 ,感谢每个对我提出建议的人本作品采用《CC 协议》,转载必须注明作者和本文链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信朋友圈广告详细说明

根据官方发布的微信广告系统介绍&#xff0c;朋友圈广告来源于微信广告的一部分&#xff0c;与公众号广告形成了一整个体系。关于公众号的广告&#xff0c;简单说&#xff0c;他可以把微信公众号变成广告牌&#xff0c;会根据用户的阅读习惯以及个人信息来进行广告的投放。每一…

EasyExcel 导出文件的格式化

阿里开源的这个库&#xff0c;让 Excel 导出不再复杂&#xff08;既要能写&#xff0c;还要写的好看&#xff09; 之前聊了 EasyExcel 的内容导出&#xff0c;本文主要说一下导出文件的格式化&#xff0c;格式化包括工作表/单元格样式和内容格式化。毕竟&#xff0c;有时候还是…

JSON数组分配输出每个li

有这么一个JSON数组&#xff0c;需求是只需要输出每个数组里面的某个值&#xff0c;不需要全部输出来。 var data [ {"MachineID":"171914","Cost":"13,642.41","Currency":"PHP" }, {"MachineID":&qu…

[BZOJ 3236] [Ahoi2013] 作业 [BZOJ 3809] 【莫队(+分块)】

题目链接&#xff1a; BZOJ - 3236 BZOJ - 3809 算法一&#xff1a;莫队 首先&#xff0c;单纯的莫队算法是很好想的&#xff0c;就是用普通的第一关键字为 l 所在块&#xff0c;第二关键字为 r 的莫队。 这样每次端点移动添加或删除一个数字&#xff0c;用树状数组维护所求的…

武汉理工大学java,武汉理工大学 web技术基础

计算机网络是现代通信技术与计算机技术相结合的产物&#xff0c;Internet则是计算机网络的最具体的应用。Web服务是最主要的网络服务&#xff0c;几乎一提到Internet&#xff0c;就会想到Web技术。本课程将介绍互联网的发展历史&#xff0c;最新的科学进展&#xff0c;Web的工作…

mysql多实例

mysql的多实例有两种方式可以实现&#xff0c;两种方式各有利弊。第一种是使用多个配置文件启动不同的进程来实现多实例&#xff0c;这种方式的优势逻辑简单&#xff0c;配置简单&#xff0c;缺点是管理起来不太方便。第二种是通过官方自带的mysqld_multi使用单独的配置文件来实…

oracle闪回某个时间点的数据库,oracle11g 使用闪回查询恢复表到过去某一个时间点...

一、新建测试表并插入数据&#xff1a;oracle二、模拟表数据误删并提交&#xff1a;测试三、使用闪回查询来查误删前表的数据&#xff1a;(表误删是在15:08分左右误删&#xff0c;所以在15:08分以前表的数据仍是在的)&#xff1a;spa四、用如今的数据与误删前的数据作对比&…

opengl微开发之1-从零開始

对OpenGL有一点了解之后&#xff0c;如今開始真正编写代码。 今天的内容&#xff1a; 使用FreeGLUT创建OpenGL的上下文环境 初始化GLEW 创建一个OpenGL的的模板范例 第一步&#xff1a; 一个OpenGL的上下文能够同意我们传递命令究竟层硬件&#xff0c;所以须要一个上下文环境。…

Git客户端(Windows系统)的使用(Putty)(转)

本文环境&#xff1a; 操作系统&#xff1a;Windows XP SP3 Git客户端&#xff1a;TortoiseGit-1.8.14.0-32bit 一、安装Git客户端 全部安装均采用默认&#xff01; 1. 安装支撑软件 msysgit: http://msysgit.github.io/ 当前最新版本为v1.9.5。 2. 安装TortoiseGit 首先&#…

oracle只舍不入,Oracle常识基础(一)

一.Oracle数据类型1.字符数据类型.> char:可以存储字母数字值&#xff0c;长度在1到2000个字节。.> varchar2:存储可变长度的char类型字符串,大小在1到4000个字节范围内。.> long:存储可变长度的字符数据,最多存储2GB。long类型的使用限制&#xff1a;*********…

软件测试的误区

随着软件测试对提高软件质量重要性的不断提高&#xff0c;软件测试也不断受到重视。但是&#xff0c;国内软件测试过程的不规范&#xff0c;重视开发和轻视测试的现象依旧存在。因此&#xff0c;对于软件测试的重要性、测试方法和测试过程等方面都存在很多不恰当的认识&#xf…

Kubernetes用户指南(二)--部署组合型的应用、连接应用到网络中

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/49026825 一、部署组合型的应用1、使用配置文件启动replicas集合k8s通过Replication Controller来创建和管理各个不同的重复容器集合&#xff…

oracle指令df,​ oracle 常用命令大汇总

oracle常用命令大汇总第一章&#xff1a;日志管理1、forcing log switchessql> alter system switch logfile;2、forcing checkpointssql> alter system checkpoint;3、adding online redo log groupssql> alter database add logfile [group 4]sql> (/disk3/log4a…

时刻获取浏览器宽度

$(function(){$(window).resize(Nchwid);function Nchwid() {var widdocument.documentElement.clientWidth;console.log(wid); }}) 转载于:https://www.cnblogs.com/nc-blog/p/4250132.html

oracle 函数

运算符: 算数运算符: - * / 连接运算符 || e.g select a||b||c from dual; 比较运算符 >, , >, <, <, !, like, between and, is null, in 任何值与null进行运算 都为null ascii(a); 根据字符 返回编码值 chr(编…

oracle中defined,Oracle:专栏定义(Oracle: column ambigously defined)

Oracle&#xff1a;专栏定义(Oracle: column ambigously defined)我收到以下错误。 据我所知&#xff0c;所有列都是由表名定义的&#xff0c;所以我不明白为什么我从Oracle数据库中得到这个错误。OCIError: ORA-00918: column ambiguously defined: SELECT * FROM (SELECT raw…

两道二分coming~

第一道&#xff1a;poj 1905Expanding Rods 题意&#xff1a;两道墙&#xff08;距离L&#xff09;之间架一根棒子&#xff0c;棒子受热会变长&#xff0c;弯曲&#xff0c;长度变化满足公式&#xff08; s(1n*C)*L&#xff09;&#xff0c;求的是弯曲的高度h。 首先来看这个图…

include静态加载布局ViewStub动态加载布局

layout"layout/" 文件名.xml/> 他可以加载任何的layout如果是如果想加载一个控件&#xff0c;要把这个控件写在layout。xml文件里 ViewStub android:id"id/vsb" android:layout_width"match_parent" android:layout_height&qu…

oracle 返回表的函数,oracle 返回表函数

--首先创建一个类型create or replace type t_test as object( empno number(4), ename varchar2(20), job varchar2(20), sal number(7,2) ) ; ---创建一个对象&#xff0c;引用上面的类型t_test create or replace type t_test_table as table of t_t…

十天学Linux内核之第七天---电源开和关时都发生了什么

十天学Linux内核之第七天---电源开和关时都发生了什么 原文:十天学Linux内核之第七天---电源开和关时都发生了什么说实话感觉自己快写不下去了&#xff0c;其一是有些勉强跟不上来&#xff0c;其二是感觉自己越写越差&#xff0c;刚开始可能是新鲜感以及很多读者的鼓励&#xf…