2013-07-22 43 views
5

Tôi đã triển khai mã mẫu sau để truy cập gmail và nhận 10 đối tượng thư đầu tiên sử dụng AE.Net.Mail.Truy cập GMail bằng AE.Net.Mail trong C#

Tôi tự hỏi những gì là chính xác đi sai, tôi liên tục nhận được lỗi

Một nỗ lực kết nối thất bại vì các bên kết nối không đúng cách phản ứng sau một khoảng thời gian, hoặc thiết lập kết nối thất bại vì kết nối máy chủ không phản hồi 173.194.79.108:993

Đây là mã.

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

Hãy cập nhật cho tôi nếu có ai gặp phải vấn đề tương tự như thế này và cách giải quyết vấn đề.

Cảm ơn, Sriram

+0

Chỉ cần một mẹo nhỏ: bạn đang tạo một danh sách và sau đó trong dòng tiếp theo bạn loại bỏ nó và tạo một hình mới với ToList(); Nếu bạn muốn thêm vào danh sách bạn đã tạo, bạn phải sử dụng AddRange (...). Trong trường hợp của bạn, bạn tạo 2 danh sách mà bạn chỉ sử dụng danh sách thứ hai – riki

Trả lời

6

tôi giả lỗi mà bạn đang nhận được là từ ngoại lệ ném từ các nhà xây dựng ImapClient mà cố gắng để kết nối với máy chủ IMAP từ xa. Lỗi đó là Winsock error 10060 (Connection timed out.) thường xảy ra nếu các gói kết nối của bạn bị chặn hoặc nếu bạn cố gắng kết nối với máy chủ không đúng hoặc đến một cổng sai. Bạn có vài tùy chọn ở đây:

  • ping/traceroute imap.gmail.com và xem nếu nó có thể truy cập
  • 993 là cổng SSL IMAP, do đó bạn có thể sử dụng openssl s_client -connect imap.gmail.com:993 để kiểm tra xem bạn có thể kết nối với máy chủ IMAP. Nếu bạn được kết nối, bạn sẽ được cung cấp chứng chỉ máy chủ IMAP của gmail và với thông báo * OK Gimap ready for requests sau đó bạn có thể nhập lệnh đăng nhập IMAP 0 LOGIN username pass.
  • kiểm tra cài đặt proxy của bạn. Hãy thử kết nối mà không cần sử dụng proxy.
  • kiểm tra cài đặt bộ định tuyến/tường lửa của bạn. Cổng 993 có mở không?
  • hãy thử sử dụng imap.googlemail.com thay vì imap.gmail.com
+0

Cảm ơn bạn rất nhiều Bojan! Tôi sẽ thử tất cả các điểm bạn đã đề cập! Và sẽ cập nhật cho bạn khi tôi thực hiện nó .. –

+0

Nó hoạt động trong máy tính xách tay tại nhà của tôi. Đó là cách không bao giờ làm việc trong môi trường làm việc của chúng tôi. Như bạn đã nói, cổng 993 không được mở. Cảm ơn vì đầu vào của bạn! –

+0

Cảm ơn bạn rất nhiều !!! – jonatanes

Các vấn đề liên quan