In einem E-Mail Konto bei Google Mail [1] wollte ich alle E-Mails löschen, aber wie macht man das in .NET? Google verlangt eine SSL Verbindung, also muss ich mir doch mal den SslStream [2] im Namensraum System.Net.Security anschauen. Eigentlich ist es super einfach, denn man benutzt einfach den SslStream, der den Stream vom TcpClient kapselt, außen sieht das dann genauso aus wie ein normaler Stream.
TcpClient c = new TcpClient("pop.gmail.com", 995); SslStream ssl = new SslStream(c.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null ); ssl.AuthenticateAsClient("pop.gmail.com"); // ab hier ist es dann wieder gleich Console.WriteLine(ReadMessage(ssl)); byte[] message = Encoding.ASCII.GetBytes("USER (Hidden)"); ssl.Write(message);Console.WriteLine(ReadMessage(ssl)); ssl.Write(message); Console.WriteLine(ReadMessage(ssl));
message = Encoding.ASCII.GetBytes("PASS **********\r"); ssl.Write(message); Console.WriteLine(ReadMessage(ssl)); // ...
Na, das ist ja echt super einfach, ich liebe es. Nebenbei sei erwähnt, dass man das über die Web Oberfläche auch sehr einfach machen kann, wenn auch nicht automatisiert. Dort klickt man im Posteingang auf Alle markieren, dann auf Wählen sie alle 3585 Konversationen in Posteingang, und dann weiter auf Löschen, geht natürlich noch schneller.