2

我正在尝试接收来自 Gmail 的电子邮件。偶尔(大约 5 次中的 1 次)我收到 System.Net.Sockets.SocketException,错误消息:

A socket operation was attempted to an unreachable network [2a00:1450:4013:c01::6d]:993

网络地址并不总是相同,但略有不同。此错误偶尔会出现在我要检查的所有 Gmail 邮箱中,但根本不会出现在我的 Office 365 邮箱中。

我的应用程序是由 Microsoft Azure 托管的 MVC 5 应用程序。我使用S22 Imap 库

检索电子邮件的代码的相关部分是:

using S22.Imap;

ImapClient Client;

List<MailMessage> NewMessages;
try
{
    Client = new ImapClient(tenant.ImapHostName, 
    tenant.ImapPortNumber, 
    tenant.ImapUserName, 
    tenant.ImapPassword,
    AuthMethod.Login, tenant.UseSsl);
}
catch (Exception e)
{
    return;
}

try
{
    NewMessages = GetUnseenMessages(Client);
}
catch (Exception e)
{
}

我已经在我的 Azure Web 服务上禁用了 IPv6(在适配器上禁用了它),但这个错误仍然一遍又一遍地出现。

4

2 回答 2

2

imap.gmail.com 返回多个 IP 地址(现在三个,但数量可能会因时间和位置而异)。你应该尝试所有三个。如果你看到的方式失败了,你应该尝试下一个地址,所以下一步是找出 S22 是否这样做,如果没有,你如何做到这一点。

于 2014-10-02T09:21:51.247 回答
1

我遇到了与 OP 相同的问题,并使用S22.Imap.dll重试了多个 IP 地址

        var ips = Dns.GetHostAddresses("imap.gmail.com");
        foreach(var ip in ips)
        {
            try
            {
                return new ImapClient(ip.ToString(), "993", Email, Password, AuthMethod.Login, true);
            }
            catch(SocketException e) //error means server is down, try other IP
            {
                //nothing, check next IP for connection
            }
        }
于 2016-12-13T09:53:39.270 回答