Очистить весь почтовый ящик Mail.ru

alerzo

Client
Регистрация
29.02.2012
Сообщения
134
Благодарностей
3
Баллы
18
Добрый день!
Необходимо очистить весь почтовый ящик (папка входящие), максимально быстро.
Подскажите рабочий метод?
На данный момент работает так https://yadi.sk/i/DpB6ivsQ3VQmor
Ищу то, чего заранее нет (+ чищу письма при загрузке), но работает не стабильно, чистит в 60% случаев, очень часто письма остаются.
Как улучшить работу?
 

esouldy

Client
Регистрация
28.02.2016
Сообщения
185
Благодарностей
92
Баллы
28
должно работать так. не проверял, но должно =)
Код:
using MailKit.Net.Imap;
using MailKit;
Код:
string login = project.Profile.Email;
string password = project.Profile.EmailPassword;
string server = "imap.mail.ru";
string port = "993";
try {
    using (var client = new ImapClient())
    {
        client.ServerCertificateValidationCallback = (s, c, h, e) => true;
        client.Connect(server, int.Parse(port), true);
        client.Authenticate(login, password);
        var inbox = client.Inbox;
        inbox.Open(FolderAccess.ReadWrite);
       
        for (int i = 0; i < inbox.Count; i++)
        {
            var message = inbox.GetMessage(i);
            inbox.AddFlags(message,MessageFlags.Deleted);
        }
        client.Disconnect(true);
    }
} catch (Exception e){
    return e.Message;
}
 
  • Спасибо
Реакции: Yuriy Zymlex

alerzo

Client
Регистрация
29.02.2012
Сообщения
134
Благодарностей
3
Баллы
18
должно работать так. не проверял, но должно =)
Код:
using MailKit.Net.Imap;
using MailKit;
Код:
string login = project.Profile.Email;
string password = project.Profile.EmailPassword;
string server = "imap.mail.ru";
string port = "993";
try {
    using (var client = new ImapClient())
    {
        client.ServerCertificateValidationCallback = (s, c, h, e) => true;
        client.Connect(server, int.Parse(port), true);
        client.Authenticate(login, password);
        var inbox = client.Inbox;
        inbox.Open(FolderAccess.ReadWrite);
      
        for (int i = 0; i < inbox.Count; i++)
        {
            var message = inbox.GetMessage(i);
            inbox.AddFlags(message,MessageFlags.Deleted);
        }
        client.Disconnect(true);
    }
} catch (Exception e){
    return e.Message;
}

Я правильно понял что нужно добавить два отдельных блока вставки с#?
У меня выскакивает куча ошибок скрин https://yadi.sk/i/lpgwrLeM3VUDYs
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
Я правильно понял что нужно добавить два отдельных блока вставки с#?
Нет, не правильно.
Надо добавить пространства имен в OwnCode.
upload_2018-5-8_23-40-11.png


Также подключить к проекту доп. dll.
upload_2018-5-8_23-41-16.png


По факту там нужны три dll, без которых зенка будет материться.
upload_2018-5-8_23-42-16.png

Эти dll надо закинуть в папку ExternalAssemblies которая находится в папке зенки, и потом уже добавлять их в проект.
upload_2018-5-8_23-44-54.png


Ну а дальше собственно код по работе с этой либой добавить в экшен C#

Ссыль на проект https://github.com/jstedfast/MailKit
Это обертка поверх этого http://www.mimekit.net/

По факту, MailKit одно из лучших решений для работы с почтой.

В прикрепленном к посту архив с нужными либами.

PS: @esouldy если даешь кусок кода, то хоть чутка объясняй что куда, а то для не посвященных это китайская грамота.:D
 

Вложения

Последнее редактирование:

MaximyLbka

Client
Регистрация
14.06.2016
Сообщения
1
Благодарностей
0
Баллы
1
То чего так не хватало)Спасибо)
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 777
Благодарностей
1 448
Баллы
113
Нет, не правильно.
Надо добавить пространства имен в OwnCode.
Посмотреть вложение 29523

Также подключить к проекту доп. dll.
Посмотреть вложение 29524

По факту там нужны три dll, без которых зенка будет материться.
Посмотреть вложение 29525
Эти dll надо закинуть в папку ExternalAssemblies которая находится в папке зенки, и потом уже добавлять их в проект.
Посмотреть вложение 29526

Ну а дальше собственно код по работе с этой либой добавить в экшен C#

Ссыль на проект https://github.com/jstedfast/MailKit
Это обертка поверх этого http://www.mimekit.net/

По факту, MailKit одно из лучших решений для работы с почтой.

В прикрепленном к посту архив с нужными либами.

PS: @esouldy если даешь кусок кода, то хоть чутка объясняй что куда, а то для не посвященных это китайская грамота.:D
Спасибо, а можно пожалуйста небольшой пример как это юзать? Реально в последние пару лет с стандартным кубиком зено Принять почту происходят непонятные вещи, в одних версиях он работает, в других не работает, в каких то версиях вообще работает через задницу. А так будет универсальное решение для всех версий зено.
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
Спасибо, а можно пожалуйста небольшой пример как это юзать? Реально в последние пару лет с стандартным кубиком зено Принять почту происходят непонятные вещи, в одних версиях он работает, в других не работает, в каких то версиях вообще работает через задницу. А так будет универсальное решение для всех версий зено.
А это разве не пример?
Закинуть либы, добавить namespace, копипастнуть код. И все.
Дальше уже только работа со своими данными - подставлять логин/пасс.
должно работать так. не проверял, но должно =)
Код:
using MailKit.Net.Imap;
using MailKit;
Код:
string login = project.Profile.Email;
string password = project.Profile.EmailPassword;
string server = "imap.mail.ru";
string port = "993";
try {
    using (var client = new ImapClient())
    {
        client.ServerCertificateValidationCallback = (s, c, h, e) => true;
        client.Connect(server, int.Parse(port), true);
        client.Authenticate(login, password);
        var inbox = client.Inbox;
        inbox.Open(FolderAccess.ReadWrite);
      
        for (int i = 0; i < inbox.Count; i++)
        {
            var message = inbox.GetMessage(i);
            inbox.AddFlags(message,MessageFlags.Deleted);
        }
        client.Disconnect(true);
    }
} catch (Exception e){
    return e.Message;
}
 

Mahno

Client
Регистрация
16.05.2015
Сообщения
440
Благодарностей
94
Баллы
28
Вылетает ошибка "Компиляция кода Ошибка в действии "CS1501" "Ни одна из перегрузок метода "AddFlags" не принимает "2" аргументов". [Строка: 16; Cтолбец: 13]"

Код такой:
Код:
string login = project.Variables["maillogin"].Value;
string password = project.Variables["mailpass"].Value;
string server = "imap.mail.ru";
string port = "993";
try {
  using (var client = new ImapClient())
  {
  client.ServerCertificateValidationCallback = (s, c, h, e) => true;
  client.Connect(server, int.Parse(port), true);
  client.Authenticate(login, password);
  var inbox = client.Inbox;
  inbox.Open(FolderAccess.ReadWrite);
   
  for (int i = 0; i < inbox.Count; i++)
  {
  var message = inbox.GetMessage(i);
  inbox.AddFlags(message,MessageFlags.Deleted);
  }
  client.Disconnect(true);
  }
} catch (Exception e){
  return e.Message;
}
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 777
Благодарностей
1 448
Баллы
113
А это разве не пример?
Закинуть либы, добавить namespace, копипастнуть код. И все.
Дальше уже только работа со своими данными - подставлять логин/пасс.
Прежде чем написать тут, я это все уже попробовал! Ошибки валятся( Не с проста же я тут написал!
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
Ошибки валятся( Не с проста же я тут написал!
Если ошибки валятся, так может стоит разобраться в чем ошибка?

Вылетает ошибка "Компиляция кода Ошибка в действии "CS1501" "Ни одна из перегрузок метода "AddFlags" не принимает "2" аргументов". [Строка: 16; Cтолбец: 13]"
Вот тут собственно все и пишется, где проблема, и почему. Так надо посмотреть какие есть перегрузки для метода, и какие принимает параметры.


C#:
try
{
    using(var client = new ImapClient())
    {
        client.ServerCertificateValidationCallback = (s, c, h, e) = > true;
        client.Connect(server, int.Parse(port), true);
        client.Authenticate(login, password);
       
        var inbox = client.Inbox;
        inbox.Open(FolderAccess.ReadWrite);

        for (int i = 0; i < inbox.Count; i++)
        {
            var msg = inbox.GetMessage(i).Subject;
            inbox.AddFlags(i, MessageFlags.Deleted, false);
            project.SendInfoToLog((i+1) + "/" + inbox.Count + "  " + msg, true);
        }

        client.Inbox.Expunge();
        client.Disconnect(true);
    }
}
catch (Exception e)
{
    return e.Message;
}
 

Mahno

Client
Регистрация
16.05.2015
Сообщения
440
Благодарностей
94
Баллы
28
Код:
string login = project.Variables["maillogin"].Value;
string password = project.Variables["mailpass"].Value;
string server = "imap.mail.ru";
string port = "993";
try
{
    using(var client = new ImapClient())
    {
        client.ServerCertificateValidationCallback = (s, c, h, e) = > true;
        client.Connect(server, int.Parse(port), true);
        client.Authenticate(login, password);
       
        var inbox = client.Inbox;
        inbox.Open(FolderAccess.ReadWrite);
        for (int i = 0; i < inbox.Count; i++)
        {
            var msg = inbox.GetMessage(i).Subject;
            inbox.AddFlags(i, MessageFlags.Deleted, false);
            project.SendInfoToLog((i+1) + "/" + inbox.Count + "  " + msg, true);
        }
        client.Inbox.Expunge();
        client.Disconnect(true);
    }
}
catch (Exception e)
{
    return e.Message;
}
Пишет:
Компиляция кода Ошибка в действии "CS1003" "Синтаксическая ошибка, ожидалось "=>"". [Строка: 8; Cтолбец: 67]
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
Компиляция кода Ошибка в действии "CS1003" "Синтаксическая ошибка, ожидалось "=>"". [Строка: 8; Cтолбец: 67]
Пробел лишний.

client.ServerCertificateValidationCallback = (s, c, h, e) = > true;
client.ServerCertificateValidationCallback = (s, c, h, e) => true;
 
  • Спасибо
Реакции: Mahno

Mahno

Client
Регистрация
16.05.2015
Сообщения
440
Благодарностей
94
Баллы
28

qzen4i

Client
Регистрация
01.05.2014
Сообщения
1 408
Благодарностей
314
Баллы
83
скажите а как тоже самое сделать с корзиной ? и спамом, выборочно чтобы можно было указать
 

pavelbond

Client
Регистрация
07.05.2015
Сообщения
91
Благодарностей
3
Баллы
8
Вопрос как перемещать через mailkit письма из спама во входящие?
Заранее спс
 

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