Как взять несколько писем?

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

backoff

Client
Регистрация
20.04.2015
Сообщения
6 386
Реакции
6 671
Баллы
113
Первый раз сталкиваюсь с такой ситуацией. В общем такая тема.

Есть 1 емайл, на него приходят письма, с разной временной задержкой в несколько дней ...
Нужно взять все письма, в названиях которых есть определенный текст, по региксу в общем, в названии меняется только домен, по домену ориентироваться нельзя, так как не знаешь какой когда прилетит.
Можно ли как-то это выгрузить в список, а потом распарсить?
Ну или брать каждый раз по одному письму сверху поочередно с удалением и его смотреть, тоже не нашел как такое можно сделать.

Подскажите, может кто уже сталкивался с таким.
 
Можно ли как-то это выгрузить в список, а потом распарсить?
На форуме было описание C# метода получения писем в список.
По 1 письму тоже можно брать и сразу удалять, но быстрее будет взять именно первым способом.
 
этот код под свои нужды можно и нужно модифицировать

C#:
Развернуть Свернуть Копировать
    Tuple<string, string, string, string>[] allMails;
    allMails = ZennoPoster.BulkMailDownload(project.Variables["Login"].Value, project.Variables["PASSWORD_Email"].Value, proxyString: project.Variables["ProxyAkk_Mail"].Value ,lastHours: 2, deleteMessages: true);
    foreach(Tuple<string, string, string, string> tuple in allMails)
    {
        // tuple.Item1 - sibject, tuple.Item2 - from, tuple.Item3 - html message, tuple.Item4 - text message
        string data = "";
        try{ data = Macros.TextProcessing.Regex(tuple.Item4, @"https://.*", "0")[0].FirstOrDefault(); } catch{}
        if (data!="") {
            project.Variables["URL"].Value = data;
            return 0;
        }
    }
 
  • Оценить
Реакции: orka13 и Sergodjan
А как этот сниппет заюзать? )))
Я не шарю в шарпе

переменные создал, все добавил, запустил, пишет просто "ок"
Вот тут есть вариант подходящего снипета - принимает письма и запихивает их в таблицу.
(самый последний снипет, их там 3 штуки)
Ну и из таблицы берем строки и проверяем, ищем нужные письма.
 
Последнее редактирование:
выдает так же - ок
ничто никуда не добавляется
это все слова, только вам известно что вам нужно получить из почты!
А так это обычный кортеж в который помещается вся почта и потом перебирается циклом в поисках нужного нам письма. Цикл дорабатывается под свои нужды уже по месту!
Например так!


PHP:
Развернуть Свернуть Копировать
foreach(Tuple<string, string, string, string> tuple in allMails)
    {
        project.SendInfoToLog(tuple.Item1);
        project.SendInfoToLog(tuple.Item2);
        project.SendInfoToLog(tuple.Item3);
        project.SendInfoToLog(tuple.Item4);
        
            if(tuple.Item1.ToLower().Contains("восстановление"))//проверяем тему письма
            {
                project.SendInfoToLog("Письмо найдено", true);//
                link = new Regex(@"тут регулярка").Match(tuple.Item3).Value;//выпарсиваем  ссылку
                if (link!=String.Empty) break;//ссылка получена, выходим из цикла
            }

    }
 
пишет такое
C#:
Развернуть Свернуть Копировать
Тип    Время    Сообщение
    08:53:15    Компиляция кода  Ошибка в действии "CS0103" "Имя "link" отсутствует в текущем контексте". [Строка: 15; Cтолбец: 8]

давайте опишу более подробно, для более лучшего понимания
приходят письма такого плана

тема письма:
C#:
Развернуть Свернуть Копировать
ваш сайт site.zone был добавлен куда-то не понятно куда
ваш сайт site2.zone был добавлен куда-то не понятно куда
ваш сайт site3.zone был добавлен куда-то не понятно куда

содержимое тоже одинаковое, отличается только сайтами.
как я вижу:
1. берем темы в список по регулярке
2. берем из списка первую строку
3. проверяем мыльник на содержание данной темы. если есть, то парсим письмо.
4. удаляем мыло

Можно под это дело просто готовый шарп с вводными данными как лог-пасс, можно без прокси?
Я в синтаксисе плохо шарю поэтому соединять 2 кода - сложно
 
вот код принимает,удаляет и складывает в список.
C#:
Развернуть Свернуть Копировать
string Login = "login";                                                // логин
string PASSWORD_Email = "pas";                                        // пароль
int lastHours = 100;                                                 // за последнии часы
bool deleteMessages = true;                                         // удаление сообщений
var list = project.Lists["List1"];                                  // куда складываем письма
//------------------------------------------------------------------//
Tuple<string, string, string, string>[] allMails;
allMails = ZennoPoster.BulkMailDownload(Login, PASSWORD_Email,lastHours: lastHours, deleteMessages: deleteMessages);
foreach(Tuple<string, string, string, string> tuple in allMails)
{
    list.Add(tuple.Item4);
}
 
  • Оценить
Реакции: Dodgy и backoff
Тип Время Сообщение
09:44:02 "обработчик писем System.Exception: Ошибка подключения к серверу IMAP
в ZennoLab.MailHandler.MailCollector.EmailClient.tFbppFdjfi2()
в ZennoLab.MailHandler.MailCollector.EmailClient.Connect()
в ZennoLab.ZennoPoster.Modules.Email.MailDownloader.d7BXw5PPvxr()"
вот в новом проекте выполнил
47866
 
Тип Время Сообщение
09:44:02 "обработчик писем System.Exception: Ошибка подключения к серверу IMAP
в ZennoLab.MailHandler.MailCollector.EmailClient.tFbppFdjfi2()
в ZennoLab.MailHandler.MailCollector.EmailClient.Connect()
в ZennoLab.ZennoPoster.Modules.Email.MailDownloader.d7BXw5PPvxr()"

может версия зенки старая ?
 
Разобрался...
Код работает. Большое спасибо.

Сначала по невнимательности, неправильно логин указал, сделал ошибку в букве.
Во втором случае, когда все работало, но выдавало ошибку - это изза того что в кубике шарпа, было указано возвращать переменную, но в поле переменной было пусто
 
вот код принимает,удаляет и складывает в список.
C#:
Развернуть Свернуть Копировать
string Login = "login";                                                // логин
string PASSWORD_Email = "pas";                                        // пароль
int lastHours = 100;                                                 // за последнии часы
bool deleteMessages = true;                                         // удаление сообщений
var list = project.Lists["List1"];                                  // куда складываем письма
//------------------------------------------------------------------//
Tuple<string, string, string, string>[] allMails;
allMails = ZennoPoster.BulkMailDownload(Login, PASSWORD_Email,lastHours: lastHours, deleteMessages: deleteMessages);
foreach(Tuple<string, string, string, string> tuple in allMails)
{
    list.Add(tuple.Item4);
}
Привет, все работает отлично, подскажи пожалуйста, можешь изменить код что бы сохранять не текстом а html?
 
Подскажите пожалуйста, как сделать так что бы не за последние 100 часов (int lastHours = 100;), а брались все письма брались что есть.
 

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