Bei der Verwendung von IMAP () in PHP zu bekommen, letzten ungelesenen E-Mails zählen
Ich versuche zu bekommen keine. von den letzten ungelesenen mails von einem gmail-Konto.Für diese habe ich installiert IMAP in meinem Ubuntu-system und haben versucht, einige PHP-iMAP-Funktionen.
Hier was ich versucht habe bis jetzt.
/* connect to gmail */
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = '[email protected]';
$password = 'user_password';
/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());
Nun bin ich besagt alle meine versuche.
NB - ich habe versucht, jedem Versuch, durch das senden von neuen E-mails an die Test-E-Mail-id
Attempt_1: Mit imap_search()
$recent_emails = imap_search($inbox,'RECENT');
if ($recent_emails)
echo count($recent_emails);
else
echo "false return";
imap_close($inbox);
Nun die Ausgabe von Attempt_1 ist "return false";
Attempt_2: Mit imap_mailboxmsginfo()
$check = imap_mailboxmsginfo($inbox);
if ($check)
echo "Recent: " . $check->Recent . "<br />\n" ;
else
echo "imap_check() failed: " . imap_last_error() . "<br />\n";
imap_close($inbox);
Hier ist die Ausgabe neu:0 und ich habe 2 neue mails, die an diese id
Attempt_3: mit imap_status()
$status = imap_status($inbox, $hostname, SA_ALL);
if ($status)
echo "Recent: " . $status->recent . "<br />\n";
else
echo "imap_status failed: " . imap_last_error() . "\n";
//Ausgabe Kürzlich:0
Attempt_4: mit Mit imap_search() Wieder mit dem parameter NEUE
$recent_emails = imap_search($inbox,'NEW');
if ($recent_emails)
echo count($recent_emails);
else
echo "false return";
imap_close($inbox);
Ausgang - false zurückgeben
So, Wo Bin ich FALSCH?
Wie bekomme ich die letzten ungelesenen E-Mails zählen?
Ya, ich wartete auf die Antwort gespannt, da ich post, und danke für deine Bemerkung, ich brauche die Lösung dringend.
InformationsquelleAutor Jyoti Ranjan | 2011-09-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Funktion scheint zu funktionieren:
Verwendung:
Ich kann nicht behaupten, die volle Punktzahl für diese Funktion. Es ist eine leicht bearbeitete version der sdolgy Antwort auf PHP Anzeige von ungelesenen E-Mails zählen. Seine version übernommen POP-mail. Diese version erfordert den vollen
$hostname
. Getestet habe ich es mit meinem eigenen gmail-Konto, und es ordnungsgemäß gemeldet, die Zahl der ungelesen Nachrichten hatte ich in meinem Posteingang.PHP Anzeige von ungelesenen E-Mails zählen hat einige ziemlich gute Lektüre. Überprüfen Sie es heraus.
Hoffe, das hilft.
UPDATE
Aus: Hat Gmail unterstützt alle IMAP-Funktionen?
Verfied bei: Gmail-IMAP-Implementierung Buggy
Siehe auch: Jyoti Ranjan Antwort (unten) für eine mögliche Lösung.
Sorry für das Missverständnis. Ich hatte gerade einen Freund senden Sie mir eine E-Mail und verwendet
var_dump
auf die$headers
variable, um zu sehen, was kam. Leider die einzige Flagge geschickt ist U (ungelesen). Es gibt nichts, um anzuzeigen, wenn es den letzten. Ich habe auchimap_status
hat wie Sie und UNGESEHEN eingestellt ist, aber nicht den LETZTEN.Offenbar, es ist nicht möglich, mit gmail. Siehe mein update in der Antwort.
Danke für die info Herbert, zumindest ich bin nicht in der Dunkelheit nun, werde versuchen, einige andere Methode um meine Arbeit zu erledigen
Ich nahm Ihre post zu Beantworten, weil es viele Infos und vielleicht habe ich werden nicht in der Lage, zu glauben, die Lösung in meinem Weg, wenn ich nicht die gmail-Fehler info. Also, wenn jemand liest diese Frage,er wird es Lesen urs erste und kam zu wissen, über gmail bug, dann kann er sehen, meine Lösung in meiner Umgebung oder denken kann, etwas anderes, um sein problem zu lösen, Also Info ist mehr imp. als Lösung als Lösung kann viele 🙂
InformationsquelleAutor Herbert
Habe ich es gelöst mit Datenbank,Das ist, wie ich es getan haben.
1.Ich machte eine Spalte in der Benutzer Tabelle für ex- 'email_max_uid' INT(11) NOT NULL default ' 0
2.Wenn ein Benutzer lädt die Seite zuerst mit meiner sql-Abfrage, die ich abgerufen den Wert von 'email_max_uid", dass bestimmte Benutzer
3.eine Verbindung zu seinem Google Mail-Konto automatisch und bekam die E-mails ungelesen und total mails
4.Dann
5.Zeigen die letzten mails zählen
6.Ich habe einen link, macht der Benutzer sich in seinem Google Mail-Konto ohne zu Fragen, seine E-Mail-id und Passwort
Wenn der Nutzer sich in seinem account
email_max_uid is updated with count($emails)
*Mein Lösung ist für den Fall, wo ein Benutzer kann sich in seinem gmail-Konto nur durch diese Anwendung, wenn er loggt sich in seinen account von außerhalb, die Datenbank wird nicht aktualisiert werden, so dass falsch nicht. der E-mail zählt, wird gezeigt werden.In meinem problem-Fall, user selbst nicht weiß, seine gmail-id und Passwort von der Firma zu sehen, nur Ihre E-mails. Also er kann sich in seinem dieses Konto von außerhalb. Das ist, warum diese Lösung funktioniert.
Dies ist, wie ich es gelöst 3 Tagen gemeldet.Sorry für die späte Antwort
Ya, ich habe gerade verwendet die grundlegenden Konzepte von PHP und löste es nach meiner Anforderung. Hoffe gmail entfernen Sie die Fehler, so dass mehrere IMAP () verwendet werden.
InformationsquelleAutor Jyoti Ranjan