MailKit предоставляет клиент SOCKS5 напрямую через интерфейс подключения почтовой службы. Задайте ProxyClient перед вызовом Connect:

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. У Socks5Client есть также конструктор, принимающий System.Net.NetworkCredential, когда сервер SOCKS требует учётные данные.

Порт 995 вместе с SslOnConnect сразу выбирает TLS для соединения POP3. Сохраните имя хоста почтового сервера в Connect, чтобы его сертификат проверялся обычным образом. Если провайдер требует STLS на порту 110, явно выберите SecureSocketOptions.StartTls и используйте задокументированную конечную точку этого провайдера.

Похожие статьи