2016-01-08 1 views
2

J'utilise MailKit pour lire les messages d'un compte gmail. Fonctionne très bien. Mais, je veux obtenir le statut du message comme s'il est lu, non lu, important, étoilé etc. Est-ce possible avec MailKit? Je ne peux pas trouver quoi que ce soit à ce sujet.MailKit Imap obtenir le statut lu et non lu d'un mail

Voici mon code:

var inbox = client.Inbox; 
var message = inbox.GetMessage(4442);//4442 is the index of a message. 

Console.WriteLine("Message Importance : {0}", message.Importance); 
Console.WriteLine("Message Priority : {0}", message.Priority); 

L'importance et la priorité revient toujours "Normal". Comment trouver ce message est marqué comme important ou non? et comment obtenir le statut lu ou non lu de ce message?

Répondre

3

Il n'y a pas de propriété de message car un MimeMessage est juste le flux de message MIME brut analysé et IMAP ne stocke pas ces états sur le flux de messages, il les stocke séparément.

Pour obtenir l'information que vous voulez, vous aurez besoin d'utiliser la méthode Fetch():

var info = client.Inbox.Fetch (new [] { 4442 }, MessageSummaryItems.Flags | MessageSummaryItems.GMailLabels); 
if (info[0].Flags.Value.HasFlag (MessageFlags.Flagged)) { 
    // this message is starred 
} 
if (info[0].Flags.Value.HasFlag (MessageFlags.Draft)) { 
    // this is a draft 
} 
if (info[0].GMailLabels.Contains ("Important")) { 
    // the message is Important 
} 

espoir qui aide.

+0

Merci pour votre aide.) Mais, comment puis-je trouver si ce message est vu ou non? – siva

+0

Vérifiez les indicateurs pour MessageFlags.Seen - si ce n'est pas là, alors il est invisible. – jstedfast

+0

Fetch() n'accepte pas int comme premier paramètre. et qu'est-ce que 'folder'? – siva