2013-07-22 9 views
5

Ho implementato il seguente codice di esempio per accedere a gmail e ottenere i primi 10 oggetti di posta elettronica utilizzando AE.Net.Mail.Accesso a GMail tramite AE.Net.Mail in C#

Mi chiedo che cosa sta esattamente andando male, sto più volte ottenendo l'errore

un tentativo di connessione non riuscito perché l'entità connessa non ha risposto correttamente dopo un periodo di tempo, o stabilito il collegamento riuscita perché collegato ospite non ha risposto 173.194.79.108:993

Questo è il codice.

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; 
     } 
    } 
} 

Si prega di aggiornare me se qualcuno ha affrontato un problema simile come questo, e come risolto.

Grazie, Sriram

+0

Solo un piccolo suggerimento: si sta creando un elenco e poi nella riga successiva in cui la scarti e crearne uno nuovo con ToList(); Se si desidera aggiungere all'elenco creato, è necessario utilizzare AddRange (...). Nel tuo caso crei 2 elenchi di cui usi solo il secondo – riki

risposta

6

ho presuppongono l'errore che stai ricevendo è da l'eccezione generata dal ImapClient costruttore che tenta di connettersi al server IMAP remoto. Questo errore è Winsock error 10060 (Connection timed out.) che di solito si verifica se i pacchetti di connessione sono bloccati o se si tenta di connettersi a un host errato oa una porta errata. Hai due opzioni qui:

  • ping/traceroute imap.gmail.com e vedere se è raggiungibile
  • 993 è la porta SSL IMAP in modo da poter utilizzare openssl s_client -connect imap.gmail.com:993 per verificare se è possibile connettersi al server IMAP. Se ti connetti, ti verrà presentato il certificato del server IMAP di Gmail e il messaggio * OK Gimap ready for requests dopodiché puoi digitare il comando di login IMAP 0 LOGIN username pass.
  • controllare le impostazioni del proxy. Prova a connetterti senza usare i proxy.
  • controllare le impostazioni del router/firewall. La porta 993 è aperta?
  • provare a utilizzare imap.googlemail.com invece di imap.gmail.com
+0

Grazie mille Bojan! Proverò tutti i punti che hai menzionato! E ti aggiorno una volta che lo faccio .. –

+0

Ha funzionato nel mio taccuino di casa. È come mai non funziona nel nostro ambiente di lavoro. Come hai detto, la porta 993 non è aperta. Grazie per il tuo contributo! –

+0

Grazie mille !!! – jonatanes