3

私の必要性: GMail アカウント (または他のメール サービス) で未読メールの数を取得したいのですが、それを取得した後、ローカル PHP サーバーの Web ページに表示する必要があります。そのため、PHP などのスクリプト言語が必要です。しかし、私は多くの例を試しましたが、どれもうまくいかないようです。したがって、基本的に私が欲しいのは、GMail アカウントにアクセスして、未読メールの数を Web ページに返すことができる PHP スクリプトです

このスクリプトを無駄に試しましたが、Web ページに常に「エラー」が表示され続けます。

<?php

function CountUnreadMail($host, $login, $passwd) {
    $mbox = imap_open($host, $login, $passwd);
    $count = 0;
    if (!$mbox) {
        echo "Error";
    } else {
        $headers = imap_headers($mbox);
        foreach ($headers as $mail) {
            $flags = substr($mail, 0, 4);
            $isunr = (strpos($flags, "U") !== false);
            if ($isunr)
            $count++;
        }
    }

    imap_close($mbox);
    return $count;
}

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

$count = CountUnreadMail($hostname, $username, $password);

?>

Chrisが助けてくれたので、このスクリプトを試してみましたが、空白のページしか表示されませんでした。これは、私が無駄に試した別のスクリプトです。

<?php

function mailCount($host, $login, $passwd) {
    $mbox = imap_open($host, $login, $passwd);
    $mail = '';

    if($mail = imap_check($mbox)) {
        return $mail->Nmsgs;
    }
}

$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'phpimap123'; //GMail username
$password = 'phptesting'; //Password

$count = mailCount($hostname, $username, $password);

echo $count;

?

PS:テスト目的でのみGMail アカウントを作成しました。

MacBook Air で Mac OS X Lion を実行しています。PHPを有効にして実行しています.MAMPもあり、実行しています.

4

3 に答える 3

3

IMAP を使用している場合は、次を使用してください。

function mailCount($host, $login, $passwd)
{
    $mbox = imap_open($host, $login, $passwd);
    $mail = '';

    if($mail = imap_check($mbox))
    {
        return $mail->Nmsgs;
    }
}

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

$count = mailCount($hostname, $username, $password);

これにより、未読メール数が表示されます。

于 2012-04-27T05:38:57.940 に答える
0

に置き換えif (!$mbox)てみてくださいif ($mbox === FALSE)

特定のタイプチェックを行う必要があります。その方法でハンドルをテストすることはお勧めできません。

また、 gmail.comからアカウントにログインしてみてください。無効な試行が多すぎる可能性があり、Gmailは最初にキャプチャを入力するように要求しますが、これはIMAPでは実行できません。

于 2012-04-27T05:13:30.770 に答える