2013-07-22 5 views
5

Ich habe den folgenden Beispielcode implementiert, um auf Google Mail zuzugreifen und die ersten 10 Postfächer mit AE.Net.Mail zu erhalten.Zugriff auf GMail mit AE.Net.Mail in C#

Ich frage mich, was genau falsch läuft, erhalte ich immer wieder den Fehler

Ein Verbindungsversuch ist fehlgeschlagen, da die verbundene Partei nicht richtig nach einer Zeitspanne reagiert hat, oder die hergestellte Verbindung fehlgeschlagen, da verbunden Host ausgefallen 173.194.79.108:993

Dies ist der Code zu reagieren.

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Linq; 
using AE.Net.Mail; 
using AE.Net.Mail.Imap; 
using System.Configuration; 

namespace IMAP 
{ 
    class Program 
    { 
     private static void Main() 
     { 
      var items = ReadMail(); 
      if (items != null && items.Count > 0) 
      { 
       foreach (var item in items.Take(10)) 
       { 
        Console.WriteLine(item.Subject); 
       } 
      } 
      Console.ReadLine(); 
     } 
     public static List<MailMessage> ReadMail() 
     { 
      List<MailMessage> messages = null; 
      try 
      { 
       string userName = "[email protected]"; // Replace with your actual gmail id 
       string passWord = "password"; // Replace with your password 

       if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(passWord)) 
       { 
        using (var imapClient = 
         new ImapClient("imap.gmail.com", userName, passWord,  ImapClient.AuthMethods.Login, 993, true)) 
        { 
         imapClient.SelectMailbox("INBOX"); 
         messages = new List<MailMessage>(imapClient.GetMessageCount()); 
         messages = imapClient.GetMessages(0, 100, false, true).ToList(); 
         imapClient.Disconnect(); 
        } 
       } 
       else 
       { 
        Console.WriteLine("Username or Password is empty!"); 
       } 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
      } 
      return messages; 
     } 
    } 
} 

Bitte aktualisieren Sie mich, wenn jemand ein ähnliches Problem wie diese konfrontiert sind, und wie sie gelöst werden.

Danke, Sriram

+0

Nur ein kleiner Tipp mit: Sie sind eine Liste und dann in der nächsten Zeile zu schaffen Sie es verwerfen und eine neue mit .ToList() schaffen; Wenn Sie zu der von Ihnen erstellten Liste hinzufügen möchten, müssen Sie AddRange (...) verwenden. In Ihrem Fall erstellen Sie 2 Listen, von denen Sie nur die zweite verwenden – riki

Antwort

6

Ich nehme an, die Fehler Sie bekommen von der Ausnahme von dem ImapClient Konstruktor geworfen ist, die auf den Remote-IMAP-Server zu verbinden versucht. Dieser Fehler ist Winsock error 10060 (Connection timed out.), der normalerweise auftritt, wenn Ihre Verbindungspakete blockiert sind oder wenn Sie versuchen, eine Verbindung mit einem falschen Host oder einem falschen Port herzustellen. Sie haben mehrere Möglichkeiten hier:

  • ping/trace imap.gmail.com und sehen, ob es
  • 993 IMAP-SSL-Port erreichbar ist, so dass Sie openssl s_client -connect imap.gmail.com:993 verwenden können, um zu überprüfen, ob Sie auf IMAP-Server verbinden kann. Wenn Sie eine Verbindung herstellen, wird Ihnen das IMAP-Serverzertifikat von gmail und die Nachricht * OK Gimap ready for requests angezeigt, nach der Sie den IMAP-Login-Befehl 0 LOGIN username pass eingeben können.
  • überprüfen Sie Ihre Proxy-Einstellungen. Versuchen Sie, eine Verbindung herzustellen, ohne Proxies zu verwenden.
  • überprüfen Sie Ihre Router/Firewall-Einstellung. Ist Port 993 offen?
  • versuchen imap.googlemail.com statt imap.gmail.com
+0

Vielen Dank Bojan! Ich werde alle Punkte versuchen, die du erwähnt hast! Und werde Sie updaten, sobald ich es mache .. –

+0

Es funktionierte in meinem Home-Notebook. Es funktioniert jedoch nicht in unserer Arbeitsumgebung. Wie Sie gesagt haben, ist der Port 993 nicht geöffnet. Danke für deinen Beitrag! –

+0

Vielen Dank !!! – jonatanes