从IMAP存储电子邮件(唯一电子邮件ID)?

时间:2015-01-05 05:28:26

标签: php imap

如何在我的数据库中存储该电子邮件中的唯一ID。

我试过$ overview = imap_fetch_overview($ inbox,$ email_number,0);我收到了一堆数字,但问题是当其中一封电子邮件被删除时,数字会发生变化。

如何正确存放? MD5的消息还是什么?

基本上我试图在我的个人网络应用程序上接收电子邮件,在那里我可以管理和访问我自己的电子邮件。它使用imap调用gmail。

无论如何我只能检查并存储新电子邮件?

/* connect to gmail */
        $hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
        $username = 'xxxx@gmail.com';
        $password = '';

        /* try to connect */
        $inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());

        /* grab emails */
        $emails = imap_search($inbox,'ALL');
        dd($emails);
        /* if emails are returned, cycle through each... */
        if($emails) {

            /* begin output var */
            $output = '';

            /* put the newest emails on top */
            rsort($emails);

            /* for every email... */
            foreach($emails as $email_number) {

                /* get information specific to this email */
                $overview = imap_fetch_overview($inbox,$email_number,0);
                $message = imap_fetchbody($inbox,$email_number,2);

                /* output the email header information */
                $output.= '<div class="toggler '.($overview[0]->seen ? 'read' : 'unread').'">';
                $output.= '<span class="subject">'.$overview[0]->subject.'</span> ';
                $output.= '<span class="from">'.$overview[0]->from.'</span>';
                $output.= '<span class="date">on '.$overview[0]->date.'</span>';
                $output.= '</div>';

                /* output the email body */
                $output.= '<div class="body">'.$message.'</div>';
            }

            echo $output;
        } 

        /* close the connection */
        imap_close($inbox);

1 个答案:

答案 0 :(得分:2)

为此目的存在UID,除非服务器提供不同的UIDVALIDITY值,否则它应保持不变。

http://tools.ietf.org/html/rfc3501#section-2.3.1.1

UID是IMAP标准的一部分,因此应该由所有IMAP服务器正确实施。如果您只是针对gmail工作,那么您可能希望查看另一个值,因为在不同的标签下可以看到相同的消息,然后UID可能与该逻辑相同的消息不同。我不知道gmail API。