IMAP 和 PHP - 从已发送和收件箱文件夹中获取所有电子邮件

ste*_*ped 4 php mysql email imap

我正在尝试获取接收和发送的任何电子邮件,并使用 PHP 将其写入 mySQL 数据库。

我使用的主机名是:

$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
Run Code Online (Sandbox Code Playgroud)

它仅引用收件箱,并成功抓取收到的电子邮件。

要抓取发送的电子邮件,我正在尝试使用此主机名:

$hostname = '{imap.gmail.com:993/imap/ssl}[Gmail]/All Mail';
Run Code Online (Sandbox Code Playgroud)

通过用“[Gmail]/所有邮件”替换“收件箱”,没有电子邮件(甚至没有发送)并被退回。

如何获取所有发送和接收的电子邮件?

小智 5

您可以使用此代码

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

你可以得到这样的数组

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
)
Run Code Online (Sandbox Code Playgroud)

删除上面的代码并像这样在 imap_open 中使用任何数组

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


Rob*_*ert 4

您可能需要通过两次调用(收件箱和已发送邮件)来完成此操作。根据这篇文章:GMAIL已发送文件夹无法使用IMAP访问,已发送项目文件夹被称为[gmail]/sent mail