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

时间:2013-12-10 16:38:55

标签: php mysql email imap

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

我使用的主机名是:

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

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

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

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

将“INBOX”替换为“[Gmail] /所有邮件”,不发送电子邮件(甚至不发送)并返回。

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

3 个答案:

答案 0 :(得分:3)

您可能需要在两个电话,收件箱和已发送的项目中执行此操作。根据这篇文章:GMAIL sent folder not accessible using IMAP,发送的项目文件夹名为[gmail]/sent mail

答案 1 :(得分:2)

您可以使用此代码

$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);

答案 2 :(得分:-3)

实际上从所有这些文件夹中获取邮件非常简单,你要做的只是制作一个文件夹扩展名,如.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