En utilisant IMAP () en PHP pour obtenir récent e-mails non lus comte
J'essaie de le faire sans. de récents courriels non lus à partir d'un compte gmail.Pour cela, j'ai installé IMAP dans mon système Ubuntu et a essayé un peu de PHP iMAP fonctions.
Voici ce que j'ai essayé jusqu'à maintenant.
/* 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());
Maintenant, je suis avec toutes mes tentatives.
NB - j'ai essayé chaque tentative, par l'envoi de nouveaux courriers à l'essai id e-mail
Attempt_1: à l'Aide de imap_search()
$recent_emails = imap_search($inbox,'RECENT');
if ($recent_emails)
echo count($recent_emails);
else
echo "false return";
imap_close($inbox);
Maintenant la Sortie de Attempt_1 est "fausse déclaration";
Attempt_2: à l'Aide de 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);
Ici, la sortie est Récente:0 alors que j'ai envoyé 2 nouveaux mails à cet id
Attempt_3: à l'aide de 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";
//Sortie Récente:0
Attempt_4: à l'Aide de l'Aide de imap_search() à Nouveau avec le paramètre de NOUVEAUX
$recent_emails = imap_search($inbox,'NEW');
if ($recent_emails)
echo count($recent_emails);
else
echo "false return";
imap_close($inbox);
De sortie - faux retour
Alors, Où ai-je TORT?
Comment puis-je obtenir la récente e-mails non lus?
Oui, j'attends la réponse avec impatience depuis que j'ai post, et merci pour votre remarque sur ce, j'ai besoin de la solution de mal.
OriginalL'auteur Jyoti Ranjan | 2011-09-09
Vous devez vous connecter pour publier un commentaire.
Cette fonction semble fonctionner:
Utilisation:
Je ne peux pas réclamer le crédit pour cette fonction. C'est un peu une version modifiée de sdolgy réponse à PHP Afficher les messages non lus comte. Sa version supposé de messagerie POP. Cette version nécessite la pleine
$hostname
. Je l'ai testé avec mon propre compte gmail et correctement indiqué le nombre de non lus messages que j'ai eu dans ma boîte de réception.PHP Afficher les messages non lus comte a un assez bon matériel de lecture. Check it out.
Espère que cette aide.
Mise à JOUR
À partir de: N'Gmail charge toutes les fonctions IMAP?
Verfied: Gmail Buggy IMAP mise en Œuvre
Voir aussi: Jyoti Ranjan réponse (ci-dessous) pour une solution possible.
Désolé pour le malentendu. J'ai juste eu un ami envoyer moi un email et utilisé
var_dump
sur le$headers
variable pour voir ce qui arriva. Malheureusement, le seul drapeau envoyé est U (non lus). Il n'y a rien d'indiquer si elle est récente. J'ai aussi utiliséimap_status
comme vous l'avez fait et de l'INVISIBLE est réglé, mais pas RÉCENTE.Apparemment, il n'est pas possible avec gmail. Voir ma mise à jour dans la réponse.
Merci pour l'info Herbert, au moins je ne suis pas dans le noir maintenant, va essayer une autre méthode pour mon travail
J'ai répondu à votre post comme Réponse, car elle a beaucoup d'infos et peut-être que je ne vais pas être en mesure de penser à la solution, à ma manière, si je n'ai pas l'gmail info bugs. Alors, quand quelqu'un va lire cette question,il va lire urs première et en est venu à connaître gmail bug, il peut voir ma solution dans mon environnement ou pouvez penser à quelque chose d'autre pour résoudre son problème, Donc l'Info est plus imp. qu'une solution comme solution peut être beaucoup 🙂
OriginalL'auteur Herbert
J'ai résolu en utilisant la base de données,C'est la façon dont je l'ai fait.
1.J'ai fait une colonne dans la table des utilisateurs, pour l'ex- 'email_max_uid' INT(11) not NULL default 0
2.Lorsqu'un utilisateur charge cette page en premier, à l'aide de ma requête sql j'ai récupéré la valeur de 'email_max_uid" de certains utilisateurs
3.se connecter à son compte gmail automatiquement et a obtenu les e-mails non lus et le total des mails
4.Puis
5.Preuve la récente mails compter
6.J'ai mis un lien qui permet à l'utilisateur de se connecter à son compte gmail sans demander son e-mail id et le mot de passe
Lorsque l'utilisateur se connecte à son compte,
email_max_uid is updated with count($emails)
*Ma solution est pour le cas où un utilisateur peut se connecter à son compte gmail est seulement grâce à cette application, s'il se connecte à son compte à partir de l'extérieur, la base de données ne sera pas mis à jour, ainsi qu'un faux pas. de mail compte sera affiché.Dans mon cas, l'utilisateur ne sait même pas son gmail id et le mot de passe fourni par l'entreprise à ne voir que leurs mails. Donc il ne peux pas se connecter à son compte ce compte à partir de l'extérieur. C'est pourquoi cette solution fonctionne.
C'est comment je l'ai résolu il ya 3 jours.Désolé pour la réponse tardive
Ouais, j'ai juste utilisé les concepts de base de PHP et résolu conformément à ma demande. Espérons gmail va supprimer sa bug donc que plus IMAP () sera utilisée.
OriginalL'auteur Jyoti Ranjan