Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# -ERR超过登录限制达15分钟。减少对POP3服务器的请求频率_C#_Email_Pop3_Hotmail - Fatal编程技术网

C# -ERR超过登录限制达15分钟。减少对POP3服务器的请求频率

C# -ERR超过登录限制达15分钟。减少对POP3服务器的请求频率,c#,email,pop3,hotmail,C#,Email,Pop3,Hotmail,使用以下代码,我已经从我的hotmail帐户中读取了msg。但有时会出现以下错误-错误超过登录限制达15分钟。减少对POP3服务器的请求频率。有人能告诉我这是什么原因吗?是服务器问题还是其他问题?除了pop3,我们还可以为hotmail使用其他协议吗 public string hotmail(string username, string password) { string result = ""; string str = string.Empty; str

使用以下代码,我已经从我的hotmail帐户中读取了msg。但有时会出现以下错误<代码>-错误超过登录限制达15分钟。减少对POP3服务器的请求频率。有人能告诉我这是什么原因吗?是服务器问题还是其他问题?除了pop3,我们还可以为hotmail使用其他协议吗

  public string hotmail(string username, string password)
  {
    string result = "";
    string str = string.Empty;
    string strTemp = string.Empty;
    try
    {
        TcpClient tcpclient = new TcpClient();
        tcpclient.Connect("pop3.live.com", 995);
        System.Net.Security.SslStream sslstream = new SslStream(tcpclient.GetStream());
        sslstream.AuthenticateAsClient("pop3.live.com");
        System.IO.StreamWriter sw = new StreamWriter(sslstream);
        System.IO.StreamReader reader = new StreamReader(sslstream);
        strTemp = reader.ReadLine();
        sw.WriteLine("USER" + " " + username);
        sw.Flush();
        strTemp = reader.ReadLine();
        sw.WriteLine("PASS" + " " + password);
        sw.Flush();
        strTemp = reader.ReadLine();
        string[] numbers = Regex.Split(strTemp, @"\D+");
        int a = 0;
        foreach (string value in numbers)
        {
            if (!string.IsNullOrEmpty(value))
            {

                int i = int.Parse(value);
                numbers[a] = i.ToString();
                a++;
            }
        }
        sw.WriteLine("RETR" + " " + numbers[0]);
        sw.Flush();
        strTemp = reader.ReadLine();
        while ((strTemp = reader.ReadLine()) != null)
        {
            if (strTemp == ".")
            {
                break;
            }
            if (strTemp.IndexOf("-ERR") != -1)
            {
                break;
            }
            str += strTemp;
        }
        sw.WriteLine("Quit ");
        sw.Flush();
        result = str;
        return result;
     }
     Catch ( Exception ex)
     {}
     return result;
  }

提前感谢。

进入邮件收件箱,您可能会收到关于此的邮件并接受。否则,请尝试在一段时间后发出请求。因为
google
对使用pop设置阅读邮件有一些限制。

您还可以使用其他协议吗?对

但是这里的代码的问题似乎是每次运行它时都在创建一个新的
TcpClient
。如果连续多次运行,Outlook.com/Hotmail最终会抱怨。这就好像你有很多客户端从一个单一的来源连接到他们的服务器,这是,当它不测试代码,往往是电子邮件滥用的迹象

TcpClient tcpclient = new TcpClient();  // Hello, new.
tcpclient.Connect("pop3.live.com", 995);
如果您在服务器上有很多事情要做,请将单个连接保持更长时间的活动状态,并在完成后将其关闭

每次运行问题中的代码时,您都在创建(而不是
tcpclient.Close()
-ing)到pop3.live.com的连接。通常,只有当我在处理代码时出现错误,导致许多连接无法正常关闭时,才会出现此错误

MSDN实际上有一个不错的例子,但您可能更感兴趣的是来自SO的另一个例子。查看它如何使用
,并在其中嵌套一个循环

using (TcpClient client = new TcpClient())
{
    client.Connect("pop3.live.com", 995);

    while(variableThatRepresentsRunning)
    {
        // talk to POP server
    }
}
顺便说一句,我在这里能给你的最好建议是告诉你不要重新发明轮子(除非你只是在玩POP服务器。通过TCP发送命令会很有趣,尤其是在IMAP上)

是一个很好的库,可以在C#中处理POP请求,包括,如果您仍在处理此问题,应该可以大大加快处理速度。它很好