如何仅搜索未读的电子邮件并将其标记为已读

时间:2013-01-11 22:02:45

标签: php

我有电子邮件进入车辆位置,我想在我的数据库中记录位置。我想出了如何获取电子邮件和查找部分内容。现在我需要弄清楚如何搜索尚未阅读电子邮件的内容,并在完成后将其标记为已读。

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

$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' .     imap_last_error());
$emails = imap_search($inbox,'FROM "onlyoneemail@email.com"');

if($emails) {
  $output = '';
  rsort($emails);
  foreach($emails as $email_number) {
    $overview = imap_fetch_overview($inbox,$email_number,0);
    $message = imap_fetchbody($inbox,$email_number,1);

    if (preg_match('/\bAddress\s*:\s*(.+?)\s*$/mi', $message, $match)){
        echo $match[1] . "<br>";
    }
  }
  echo $output;
} 

imap_close($inbox);

1 个答案:

答案 0 :(得分:3)

您只需将关键字UNSEEN添加到imap_search()中的搜索条件,就像这样:

$emails = imap_search($inbox, 'FROM "onlyoneemail@email.com" UNSEEN');