gpt4 book ai didi

c# - 使用 POP3 从 Outlook 下载电子邮件时收到未找到服务器错误

转载 作者:太空宇宙 更新时间:2023-11-03 14:54:34 25 4
gpt4 key购买 nike

我想使用 POP3 从 outlook 下载邮件,但无法连接到服务器。它在连接到服务器时显示。错误是:

Server not found at OpenPop.Pop3.Pop3Client.Connect(String hostname, Int32 port, Boolean useSsl, Int32 receiveTimeout, Int32 sendTimeout, RemoteCertificateValidationCallback certificateValidator) at Aceo.Activities.EmailPOP.RequestEmailPOP.Execute(CodeActivityContext context)

在参数中,我传递:

Host number="mail.xxx.com"

Use SSl=false or true

Port Number= 110 or 995

我的代码是:

public sealed class RequestEmailPOP:CodeActivity
{
public InArgument<string> Host { get; set; }
public InArgument<string> PortNumber { get; set; }
public InArgument<string> UseSSL { get; set; }
public InArgument<string> UserName { get; set; }
public InArgument<string> Password { get; set; }
public InArgument<string> LoggedInUser { get; set; }

protected override void Execute(CodeActivityContext context)
{

string Host = context.GetValue(this.Host);
int PortNumber =Convert.ToInt32(context.GetValue(this.PortNumber));
bool UseSSL = Convert.ToBoolean(context.GetValue(this.UseSSL));
string UserName = context.GetValue(this.UserName);
string LoggedInUser = context.GetValue(this.LoggedInUser);
string Password = context.GetValue(this.Password);
using (Pop3Client client = new Pop3Client())
{
client.Connect(Host, PortNumber, UseSSL, 600, 600, CertificateValidationCallBack);
client.Authenticate(UserName, Password);
int messageCount = client.GetMessageCount();
List<string> uids = client.GetMessageUids();
List<Message> newMessages = new List<Message>();
for (int i = 0; i < uids.Count; i++)
{
string currentUidOnServer = uids[i];
if (!seenUids.Contains(currentUidOnServer))
{
Message unseenMessage = client.GetMessage(i + 1);
newMessages.Add(unseenMessage);
}
}
}
return newMessage;
}

private static bool CertificateValidationCallBack(
object sender,
System.Security.Cryptography.X509Certificates.X509Certificate certificate,
System.Security.Cryptography.X509Certificates.X509Chain chain,
System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
return true;
}

如何解决此错误?

最佳答案

您现在可能已经解决了这个问题,但问题很可能是由于您传递给 Connect() 方法的超时值极低(600 毫秒)。这是一个非常低的超时值,可能没有足够的时间让套接字连接到远程主机。

现在插入我自己的 OpenPOP.NET 替代品:-)

许多开发人员使用超时作为“网络挂起”的解决方案,而更好的解决方案是有办法取消操作。

MailKit是唯一允许这样做的邮件库。每个需要网络事件的 API 都采用可选的 CancellationToken该参数赋予您(API 的使用者)根据需要取消该操作的能力。

与依赖几乎从不按预期工作的任意超时相比,这是一个无限好的解决方案。

(注意:MailKit 也允许设置超时,但我非常不鼓励使用它们,因为它们几乎总是被错误地使用)。

希望对您有所帮助。

关于c# - 使用 POP3 从 Outlook 下载电子邮件时收到未找到服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30837339/

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