Comment marquer un e-mail comme lu en PHP (SMTP) [Fermé]

Signaler
Messages postés
46
Date d'inscription
mardi 9 avril 2013
Statut
Membre
Dernière intervention
5 janvier 2016
-
 Utilisateur anonyme -
Bonjour,

Je désirerais faire un script php qui lit les e-mail d'une boite e-mail précise, les affiche à l'écran et ensuite qu'ils soient marqués comme lu (dès qu'ils ont été affichés). J'ai essayé avec imap_setflag_full mais je n'arrive pas a faire marquer le mail comme lu. Je vous mets mon code ci-dessous, si quelqu'un voit une erreur ou pourquoi l'e-mail n'est pas marqué comme lu.

<?php
  $boiteMail = 'mail.xxxxxxx.com';
  $port = 110;
  $login = `xxx@xxx.ch';
  $motDePasse = `xxx';

  $mbox = imap_open('{'.$boiteMail.':'.$port.'/pop3}', $login, $motDePasse);
  $mails = FALSE;
  if (FALSE === $mbox) {
      $err = 'La connexion a échoué. Vérifiez vos paramètres!';
  } else {
      $info = imap_check($mbox);
      if (FALSE !== $info) {
          $nbMessages = min(50, $info->Nmsgs);
          $mails = imap_fetch_overview($mbox, '1:'.$nbMessages, 0);
      } else {
          $err = 'Impossible de lire le contenu de la boite mail';
      }
      imap_close($mbox);
  }

  if (FALSE === $mails) {
      echo $err;
  } else {
      echo 'La boite aux lettres contient '.$info->Nmsgs.' message(s) dont '.
                                            $info->Recent.' recent(s)'.
           "<br />\n".
           "<br />\n »;

/*On affiche tout les e-mails dans une boucle*/
      foreach ($mails as $mail) {
/*seulement si ils n'a pas été lu, et si il est récent*/
        if ($mail->seen == 0 && $mail->recent == 1 && $mail->draft == 0 && $mail->deleted == 0) {
          # code...
/*vu qu'on va afficher le contenu du mail ci-dessous, on le marque comme lu et on ajoute un flag
$status = imap_setflag_full($mbox, $mail->uid, "\\Seen \\Flagged");

echo gettype($status) . "\n";
echo $status . "\n";

/*on affiche les informations de l'e-mail*/
           echo $mail->from;
           echo $mail->uid;
           echo $mail->subject;
           echo $mail->date; echo "XXrX";
           echo $mail->answered;
           echo $mail->seen;
        }
      }
  }
?>


Merci beaucoup de votre aide

2 réponses

Messages postés
46
Date d'inscription
mardi 9 avril 2013
Statut
Membre
Dernière intervention
5 janvier 2016
6
Voici le retour actuel du script, les e-mails sont affichés mais pas marqués comme lu.
La boite aux lettres contient 2 message(s) dont 2 recent(s)


Warning: imap_setflag_full(): 2 is not a valid imap resource in /home/cl/XXX/mail.php on line 34
boolean Auteur 1MessageWed, 28 Oct 2015 23:31:59 +0100XXrX00
Warning: imap_setflag_full(): 2 is not a valid imap resource in /home/cls/XXX/mail.php on line 34
boolean Auteur 2MessageWed, 28 Oct 2015 23:48:36 +0100XXrX00

Bonjour

Je n'ai jamais utilisé ces fonctions, mais si tu as fait un
imap_close($mbox);
avant, ça m'étonnerait que tu puisses te servir de $mbox plus loin.