Работа с почтой через MailKit.dll

ErikMoor

Client
Регистрация
24.03.2016
Сообщения
123
Благодарностей
22
Баллы
18
Добрый день
Собственно есть топик https://zennolab.com/discussion/threads/vot-shablon-skachivanija-pochty-cherez-mailkit-dll-kak-proksi-podkljuchit.57736/

Но прокси подключить так и не удалось
Помогите пжл не бесплатно решить эту проблему

Библиотеку с кодом можно посмотреть здесь https://zennolab.com/discussion/threads/vot-shablon-skachivanija-pochty-cherez-mailkit-dll-kak-proksi-podkljuchit.57736/post-426377
Как подключить прокси можно посмотреть здесь https://zennolab.com/discussion/threads/vot-shablon-skachivanija-pochty-cherez-mailkit-dll-kak-proksi-podkljuchit.57736/post-426474

MailKit.dll с вложения orka13 добавил в /ExternalAssemblies
Proxy.dll с вложения Moadip добавил в /ExternalAssemblies

В директивах Using прописано:
C#:
using MailKit.Net.Imap;
using MailKit;
using Proxy;
В owncode добавлено

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;


namespace ZennoLab.OwnCode
{
    /// <summary>
    /// A simple class of the common code
    /// </summary>
    public class CommonCode
    {
        public static IProxyClient CreateProxy(string proxy)
        {
            if (proxy == "socks5://111.202.85.110:1085") return null;

            IProxyClient wp;

            var split = proxy.Split('@');

            if (split.Length == 1)
            {
                var address = split[0].Split(':');

                var ip = address[0];
                var port = int.Parse(address[1]);

                var factory = new ProxyFactory();
                wp = factory.CreateProxy(Limilabs.Proxy.ProxyType.Socks5, ip, port);
            }
            else
            {
                var address = split[1].Split(':');
                var credential = split[0].Split(':');

                var ip = address[0];
                var port = int.Parse(address[1]);

                var user = credential[0];
                var password = credential[1];

                var factory = new ProxyFactory();
                wp = factory.CreateProxy(Limilabs.Proxy.ProxyType.Socks5, ip, port, user, password);
            }

            return wp;         
        }
        /// <summary>
        /// Lock this object to mark part of code for single thread execution
        /// </summary>
        public static object SyncObject = new object();

        // Insert your code here
    }
}
В кубике прописан следующий код

C#:
var server = "mail.optimum.net";
string port = "993";
int count = 5; // предел сколько писем брать в обработку (берет начиная от новых)
var login = project.Variables["mail_login"].Value; // переменная с логином типа: [email protected] (смените на рабочую, а то эта умрет на днях)
var password = project.Variables["mail_password"].Value; // пароль от почты: cUwyru9t008
project.Lists["Mails_SourceList"].Clear(); // очищаем список, в торый будет скачивать письма

try {
    using (var client = new ImapClient())
    {
        var proxy = CommonCode.CreateProxy(proxyStr);
        var socket = proxy.Connect(server, port);
        client.Connect(socket, server, port);
        client.Authenticate(login, password);
        var inbox = client.Inbox;
        inbox.Open(FolderAccess.ReadWrite);
    
        for (int i = inbox.Count-1; i >=0 && i >= inbox.Count - count; i--)
        {
            var message = inbox.GetMessage(i);
            project.Lists["Mails_SourceList"].Add(message.Subject + "\r\n" + message.TextBody);
        }
        client.Disconnect(true);
    }
} catch (Exception e){
    return e.Message;
}
Без прокси все работает, но вот когда изменил код - нет
Ошибки следующие


Столбец 17
 

VerBin

Client
Регистрация
28.05.2016
Сообщения
555
Благодарностей
457
Баллы
63
Задачу выполнил.
 
  • Спасибо
Реакции: ErikMoor

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
блин, давно хотел выложить сюда про прокси для майлкита и забыл :bk:
в общем вот так создается объект прокси
C#:
              // создаем идентификатор
            NetworkCredential myCredentials = new NetworkCredential();
            if (user !="" && password !="") myCredentials = new NetworkCredential(user,password);
            
            // создаем объект прокси
            MailKit.Net.Proxy.ProxyClient objProxyClient = new MailKit.Net.Proxy.HttpProxyClient(ip, port, myCredentials);               
            if (proxy.Contains("socks4")) objProxyClient = new MailKit.Net.Proxy.Socks4Client(ip, port, myCredentials);
            if (proxy.Contains("socks4a")) objProxyClient = new MailKit.Net.Proxy.Socks4aClient(ip, port, myCredentials);
            if (proxy.Contains("socks5")) objProxyClient = new MailKit.Net.Proxy.Socks5Client(ip, port, myCredentials);
вот так он используется в майлкит
C#:
objClient.ProxyClient = objProxyClient;
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)