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 協議》,轉載必須注明作者和本文鏈接
總結
以上是生活随笔為你收集整理的php imap 附件,学习猿地-PHP-imap 使用参考的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机一级题库ps视频,计算机一级Pho
- 下一篇: php实现服务器文件同步,PHPstor