MailKit 通过其邮件服务连接接口直接提供 SOCKS5 客户端。调用 Connect 之前先设置 ProxyClient:

using MailKit.Net.Pop3;
using MailKit.Net.Proxy;
using MailKit.Security;

using var client = new Pop3Client();
client.ProxyClient = new Socks5Client("proxy.example.net", 1080);

client.Connect("pop.example.net", 995, SecureSocketOptions.SslOnConnect);
client.Authenticate(mailUser, mailPassword);

Console.WriteLine(client.Count);
client.Disconnect(true);

把示例主机换成实际的 SOCKS 与邮件端点。在所示不带代理账号的构造函数中,SOCKS5 代理列表里的一条记录可以提供代理地址,用于允许访问的公共 POP3S 路由;该代理必须放行邮件主机和实际端口。mailUser 与 mailPassword 的取值来自应用自身的邮箱凭据处理。此示例只统计邮件数量,不下载邮件,也不把任何邮件标记为删除。

上述 API 记载于 MailKit 4.17.0。当 SOCKS 服务器要求凭据时,Socks5Client 另有一个接受 System.Net.NetworkCredential 的构造函数。

端口 995 与 SslOnConnect 会让 POP3 连接立即启用 TLS。请在 Connect 中保留邮件服务器的主机名,以便正常校验证书。若服务商要求在 110 端口使用 STLS,请显式选择 SecureSocketOptions.StartTls,并使用该服务商文档给出的端点。

相关文章