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

  • Автор темы Автор темы alerzo
  • Дата начала Дата начала

alerzo

Client
Регистрация
29.02.2012
Сообщения
134
Реакции
3
Баллы
18
Добрый день!
Необходимо очистить весь почтовый ящик (папка входящие), максимально быстро.
Подскажите рабочий метод?
На данный момент работает так https://yadi.sk/i/DpB6ivsQ3VQmor
Ищу то, чего заранее нет (+ чищу письма при загрузке), но работает не стабильно, чистит в 60% случаев, очень часто письма остаются.
Как улучшить работу?
 
должно работать так. не проверял, но должно =)
Код:
Развернуть Свернуть Копировать
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;
}
 
  • Спасибо
Реакции: ZX
должно работать так. не проверял, но должно =)
Код:
Развернуть Свернуть Копировать
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
 
Я правильно понял что нужно добавить два отдельных блока вставки с#?
Нет, не правильно.
Надо добавить пространства имен в 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
 

Вложения

Последнее редактирование:
То чего так не хватало)Спасибо)
 
Нет, не правильно.
Надо добавить пространства имен в OwnCode.
Посмотреть вложение 29523

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

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

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

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

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

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

PS: @esouldy если даешь кусок кода, то хоть чутка объясняй что куда, а то для не посвященных это китайская грамота.:D
Спасибо, а можно пожалуйста небольшой пример как это юзать? Реально в последние пару лет с стандартным кубиком зено Принять почту происходят непонятные вещи, в одних версиях он работает, в других не работает, в каких то версиях вообще работает через задницу. А так будет универсальное решение для всех версий зено.
 
Спасибо, а можно пожалуйста небольшой пример как это юзать? Реально в последние пару лет с стандартным кубиком зено Принять почту происходят непонятные вещи, в одних версиях он работает, в других не работает, в каких то версиях вообще работает через задницу. А так будет универсальное решение для всех версий зено.
А это разве не пример?
Закинуть либы, добавить 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;
}
 
Вылетает ошибка "Компиляция кода Ошибка в действии "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;
}
 
А это разве не пример?
Закинуть либы, добавить namespace, копипастнуть код. И все.
Дальше уже только работа со своими данными - подставлять логин/пасс.
Прежде чем написать тут, я это все уже попробовал! Ошибки валятся( Не с проста же я тут написал!
 
Ошибки валятся( Не с проста же я тут написал!
Если ошибки валятся, так может стоит разобраться в чем ошибка?

Вылетает ошибка "Компиляция кода Ошибка в действии "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;
}
 
Код:
Развернуть Свернуть Копировать
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]
 
Компиляция кода Ошибка в действии "CS1003" "Синтаксическая ошибка, ожидалось "=>"". [Строка: 8; Cтолбец: 67]
Пробел лишний.

client.ServerCertificateValidationCallback = (s, c, h, e) = > true;
client.ServerCertificateValidationCallback = (s, c, h, e) => true;
 
  • Спасибо
Реакции: Mahno
Вопрос как перемещать через mailkit письма из спама во входящие?
Заранее спс
 

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