5

gmail にアクセスし、AE.Net.Mail を使用して最初の 10 件のメール件名を取得するために、次のサンプル コードを実装しました。

私は正確に何がうまくいかないのだろうか、繰り返しエラーが発生しています

接続先が一定時間後に適切に応答しなかったために接続の試行が失敗したか、接続されたホストが応答しなかったために確立された接続が失敗しました 173.194.79.108:993

これがコードです。

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 = "yourname@gmail.com"; // 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;
        }
    }
}

このような同様の問題に直面した人がいる場合は、更新してください。

ありがとう、スリラム

4

1 に答える 1

6

あなたが得ているエラーはImapClient、リモート IMAP サーバーに接続しようとするコンストラクターからスローされた例外によるものだと思います。そのエラーはWinsock エラー 10060 (接続がタイムアウトしました。) です。これは通常、接続パケットがブロックされた場合、または間違ったホストまたは間違ったポートに接続しようとした場合に発生します。ここにはいくつかのオプションがあります。

  • ping/tracerouteimap.gmail.comを実行し、到達可能かどうかを確認します
  • 993 は IMAP SSL ポートなのでopenssl s_client -connect imap.gmail.com:993、IMAP サーバーに接続できるかどうかを確認するために使用できます。接続すると、gmail の IMAP サーバー証明書とメッセージが表示* OK Gimap ready for requestsされ、その後で IMAP login コマンドを入力できます0 LOGIN username pass
  • プロキシ設定を確認してください。プロキシを使用せずに接続してみてください。
  • ルーター/ファイアウォールの設定を確認してください。ポートは993開いていますか?
  • imap.googlemail.com代わりに使ってみてくださいimap.gmail.com
于 2013-07-22T12:01:54.653 に答える