2012-03-24 5 views
3

Ich habe versucht, mit InterImap Library auf mein Google Mail-Postfach zuzugreifen. Es zeigt meine Nachrichten dort, kann aber keine Nachrichten löschen. Ich habe auch eine Methode "EmptyFolder()" gefunden, funktioniert aber nicht.So leeren Sie den Google Mail-Papierkorb mit C#

Alles, was für mich funktionierte, ist MoveMessageToFolder(), aber es ist nicht, dass ich brauche.

Bitte helfen Sie mir mein Papierkorb mit C# mit der gleichen oder einer anderen Bibliothek zu leeren. Ich brauche das Codebeispiel, das das tut.

Hier ist der Code, den ich geschrieben habe.

var config = new InterIMAP.IMAPConfig("imap.gmail.com", "<my gmail username>", "<my gmail password", true, true, ""); 
var client = new InterIMAP.Synchronous.IMAPClient(config, new InterIMAP.IMAPLogger(config, new object[] { }), 1); 
var trash = client.Folders["[Gmail]"].SubFolders["Trash"]; 
trash.EmptyFolder(); 
client.Logoff(); 

Vielen Dank im Voraus.

+0

F: Also, es klingt wie a) Sie sind nicht in der Lage zu „löschen“ eine Nachricht mit InterIMap, und b) Sie sind auch nicht in der Lage „klar trash“ mit InterIMap , richtig? Bitte schau dir diesen Beitrag an und schaue ob es hilft: http://stackoverflow.com/questions/2491939/cant-mark-email-read-with-interimap-folder-is-read-only – paulsm4

Antwort

1

Wenn Sie eine Nachricht aus Ihrem Posteingang oder einem Ihrer benutzerdefinierten Ordner löschen, wird sie weiterhin in [Google Mail]/Alle Nachrichten angezeigt.

Hier ist der Grund: In den meisten Fällen entfernt das Löschen einer Nachricht einfach das Etikett dieses Ordners aus der Nachricht, einschließlich des Labels, das die Nachricht in Ihrem Posteingang identifiziert.

[Gmail]/Alle Mail zeigt alle Ihre Nachrichten an, unabhängig davon, ob sie mit Labels versehen sind oder nicht.

Wenn Sie wollen dauerhaft eine Nachricht aus allen Ordnern löschen:

  1. verschiebe es nach [Google Mail]/Papierkorb-Ordner.
  2. Löschen Sie es aus dem Ordner [Gmail]/Papierkorb.

können Sie weitere Informationen finden Sie hier: http://www.limilabs.com/blog/delete-email-permanently-in-gmail

+1

Ich hatte das schon mit InterIMAP probiert das ich verwendet habe, aber es funktionierte nur mit der Mail.dll, die von deinem Link heruntergeladen wurde. Wie auch immer, danke für die Lösung, es funktioniert jetzt für mich .. was auch immer das Ziel war. –

2

Ich mag nicht in den Papierkorb-Ordner in Google Mail manuell zu löschen. Es ist jeden Tag voller Spam. Also habe ich C# -Code kopiert, um die Arbeit für mich zu erledigen. Ich habe mail.dll von Limilabs, der Testversion, heruntergeladen und benutzt. Erstellen Sie ein Google Mail-Passwort für Apps. Hier ist der Code:

using System; 
using Limilabs.Client.IMAP; 
using System.Collections.Generic; 

namespace delete_gmail_trash 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      using (Imap imap = new Imap()) 
      { 
       imap.ConnectSSL("imap.gmail.com"); 
       imap.UseBestLogin("[email protected]", "password for Gmail apps"); 
       // Recognize Trash folder 
       List<FolderInfo> folders = imap.GetFolders(); 

       CommonFolders common = new CommonFolders(folders); 

       FolderInfo trash = common.Trash; 
       // Find all emails we want to delete 
       imap.Select(trash); 
       List<long> uidList = imap.Search(Flag.All); 
       foreach (long uid in uidList) 
       { 
        imap.DeleteMessageByUID(uid); 
        Console.WriteLine("{0} deleted", uid); 
       } 
       Console.WriteLine("Press any key to exit."); 
       Console.ReadKey(); 
       imap.Close(); 
      }  
     } 
    } 
}