簡體   English   中英

IMAP和PHP - 從已發送和收件箱文件夾中獲取所有電子郵件

[英]IMAP & PHP - Fetching all emails from sent and inbox folders

我試圖獲取收到和發送的任何電子郵件,並使用PHP將其寫入mySQL數據庫。

我使用的主機名是:

$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';

這只是引用收件箱,並成功抓取收到的電子郵件。

要抓取發送的電子郵件,我正在嘗試使用此主機名:

$hostname = '{imap.gmail.com:993/imap/ssl}[Gmail]/All Mail';

通過將“INBOX”替換為“[Gmail] / All Mail”,不會發送任何電子郵件(甚至不會發送)並返回。

如何獲取所有已發送和接收的電子郵件?

您可能需要在兩個調用,收件箱和已發送的項目中執行此操作。 根據這篇文章: GMAIL發送的文件夾無法使用IMAP訪問 ,發送的文件夾名為[gmail]/sent mail

您可以使用此代碼

$host = '{imap.gmail.com:993/ssl}';
$mail_con = imap_open($host, $login, $password);
$mailboxes = imap_list($mail_con, $host, '*');

你可以得到這樣的數組

Array(
    [0] => {imap.gmail.com:993/ssl}INBOX
    [1] => {imap.gmail.com:993/ssl}Personal
    [2] => {imap.gmail.com:993/ssl}Servers
    [3] => {imap.ipage.com:993/imap/ssl}INBOX.Sent Items
    [4] => {imap.ipage.com:993/imap/ssl}INBOX.Drafts
)

刪除上面的代碼並使用imap_open中的任何數組,如下所示

 $host = '{imap.gmail.com:993/ssl}INBOX.Sent';
 $mail_con = imap_open($host, $login, $password);

實際上從所有這些文件夾中獲取郵件非常簡單,你要做的就是創建一個文件夾擴展名,如.Sent,.Drafts等。

例:

$hostname = '{imap.gmail.com:993/imap/ssl}INBOX.Sent'; //For Sent Items<br>
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX.Drafts';//For draft<br>
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX.Trash';//For trash<br>
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX.Junk';//For junk<br>
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX.yourfolder';//For the folders u created

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM