gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:35:21 27 4
gpt4 key购买 nike

使用以下代码,我从我的 hotmail 帐户读取消息。但有时会出现以下错误。 -ERR 超过登录限制 15 分钟。减少对 POP3 服务器的请求频率。谁能告诉我这是什么原因?是服务器问题还是其他问题?除了 pop3 之外,我们还可以将其他协议(protocol)用于 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;
}

提前致谢..

最佳答案

您可以使用任何其他协议(protocol)吗?是的,hotmail/outlook.com now supports IMAP .

但此处代码的问题似乎是您每次运行时都在创建一个新的 TcpClient。如果您连续多次运行它,Outlook.com/Hotmail 最终会报错。就好像您有大量来自单一来源的客户端连接到他们的服务器,也就是说,当它不测试代码时,通常是电子邮件滥用的迹象。

TcpClient tcpclient = new TcpClient();  // Hello, new.
tcpclient.Connect("pop3.live.com", 995);

如果您在服务器上有很多事情要做,请保持单个连接的事件时间更长,并在完成后将其关闭。

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

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

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

while(variableThatRepresentsRunning)
{
// talk to POP server
}
}

顺便说一下,我在这里能给的最好建议是告诉你不要重新发明轮子(除非你只是想玩 POP 服务器。通过 TCP 发送命令可以是很多乐趣,尤其是使用 IMAP)。

OpenPop.NET是一个用 C# 处理 POP 请求的很棒的库,包括 a good MIME parser ,并且,如果您仍在为此工作,应该会加快您的速度。它的examples page非常好。

关于c# - -ERR 超过登录限制 15 分钟。减少对 POP3 服务器的请求频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18886359/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com