在php中检查未读邮件

时间:2011-03-02 20:04:00

标签: php email

我正在尝试在我的页面上实现检查新邮件功能。 我的意思是一个检查邮件的脚本,如果有未读邮件,它会通知用户“你有一封未读邮件”。

这可能吗?

提前致谢

只要用户的电子邮件和密码以纯文本形式存储在数据库中,我就设法让它工作。

我正在使用查询从我的数据库中检索用户的电子邮件和密码($ email)和($ password)

代码:

  

$ mbox =   imap_open( “{imap.domain.com:143/novalidate-cert}INBOX”,   “$ email”,“$ password”);

唯一的问题是我的用户的电子邮件密码存储为md5哈希。

如何使用imap_open处理此问题?

由于

5 个答案:

答案 0 :(得分:3)

如果您在PHP脚本中实现IMAP(或POP3)客户端,则可能。当您打开页面时,PHP将连接到邮件服务器并检查新邮件。为此,PHP需要您的用户名/密码和服务器地址/端口。因此,此信息必须存储在服务器上。

http://lv.php.net/imap_mailboxmsginfo给出的示例将为您提供更多提示。

答案 1 :(得分:1)

您需要在IMAP支持中进行编码,这可以使用PHP imap functions来完成。然而,完整的解决方案并非无足轻重。

答案 2 :(得分:1)

如果您无法使用imap_open(例如,未安装扩展程序),则可以使用curl(使用gmail测试的示例):

// https://support.google.com/mail/answer/7126229 [2017-10-22]
define('URL', 'imaps://imap.gmail.com');
define('PORT', 993);
define('USER', 'your.user@gmail.com');
define('PASS', 'your_Secret_Password');

if ($ch = curl_init()) {
    curl_setopt($ch, CURLOPT_URL, URL);
    curl_setopt($ch, CURLOPT_PORT, PORT);

    curl_setopt($ch, CURLOPT_USE_SSL, CURLUSESSL_ALL);

    curl_setopt($ch, CURLOPT_USERNAME, USER);
    curl_setopt($ch, CURLOPT_PASSWORD, PASS);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);

    // set IMAP command
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'STATUS INBOX (MESSAGES UNSEEN)');

    $res = curl_exec($ch);
    if (curl_errno($ch)) {
        echo 'CURL ERROR: ' . curl_error($ch);
    } else {
        echo trim($res);
    }
    echo PHP_EOL;

    curl_close($ch);
} else {
    die('Curl initialization failed.');
}

脚本将返回如下内容:

* STATUS "INBOX" (MESSAGES 2 UNSEEN 1)

有关IMAP命令的更多信息(https://www.google.com/search?q=imap+protocol+commands)[2017-10-22]:

答案 3 :(得分:0)

即使没有任何特殊扩展名,您也可以使用Zeta Mail component轻松完成此操作。

答案 4 :(得分:0)



$hostname='{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'mygmail@gmail.com';
$password = 'mypass';

$mbox = imap_open($hostname,$username,$password) or die('Cannot connect to Tiriyo: ' . imap_last_error());
$status=imap_status($mbox,$hostname,SA_ALL);
if ($status) {
  echo "Messages:   " . $status->messages    . "<br />\n";
  echo "Recent:     " . $status->recent      . "<br />\n";
  echo "Unseen:     " . $status->unseen      . "<br />\n";
  echo "UIDnext:    " . $status->uidnext     . "<br />\n";
  echo "UIDvalidity:" . $status->uidvalidity . "<br />\n";
} 
else {
  echo "imap_status failed: " . imap_last_error() . "\n";
}
&#13;
&#13;
&#13;

$hostname='{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'mygmail@gmail.com';
$password = 'mypass';

/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Tiriyo: ' . imap_last_error());
$MB = imap_search($inbox,'UNSEEN');
$xcount($MB);
echo $x;