Ошибка в снипете с# поиск письма на почте и активация ссылки

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

Malchishka

Client
Регистрация
10.11.2011
Сообщения
216
Реакции
36
Баллы
28
Знакомый скинул снипет для поиска и активации нужной ссылки на почте. Но что-то у меня не робит. Проверял на Я-почте, вроде всё прописал как надо, но постоянно вылазит ошибка.

Код:
Развернуть Свернуть Копировать
var res = ZennoPoster.MailConfirm("15;30;60", project.Variables["Mail"].Value, project.Variables["Parol_ot_mila"].Value, project.Variables["Email_server"].Value, Convert.ToInt32(project.Variables["Email_port"].Value), true, true, true, false, @"(?<=>)https://.*(?=</a>)", @"(?<=>)https://.*(?=</a>)", 0);
if (res!="") {res.Trim;}
instance.ActiveTab.Navigate(res, "");
if (instance.ActiveTab.IsBusy) instance.ActiveTab.WaitDownloading();
 
Никто ничего подобного не использует?
Описание на примере Я-почты:
Mail - мыло
Parol_ot_mila - пароль от мыла
Email_server - imap.yandex.com
Email_port - 993

(?<=>)https://.*(?=</a>) - 2 раза повторяется, не знаю для чего. Это регулярка, по которому исчется необходимая ссылка в письмах. Странно, что нету регулярки для поиска необходимого письма. Хз, может мне не весь снипет скинули.
 
в обработчик почты зайди он тебе регулярку по нужному письму сделает и по нужной сылке
 
в обработчик почты зайди он тебе регулярку по нужному письму сделает и по нужной сылке
Это понятно, регулярку по поиску нужной ссылки я в обработчике почты и брал. Меня интересует чего снипет не работает, ошибка там какая или как. У тебя работает он?
 
Вы бы хоть ошибку написали. Авось бы ответ уже получили
 
Ошибка выскакивает сразу, как только пытаешься запустить шаблон. Может директиву нужно какую-то прописывать?
695615c4feba1f200e765f353b9cc82d.png
 
Ошибка выскакивает сразу, как только пытаешься запустить шаблон. Может директиву нужно какую-то прописывать?
695615c4feba1f200e765f353b9cc82d.png
У вас в проекте где-то си шарп код некорректный. Из-за этого он не компилируется и выдается такая ошибка
 
Radzhab помог со снипетом, большое спасибо ему, он начал работать, но не совсем так, как мне нужно и довести его до ума у меня не получилось. Проблема в том, что я не могу никак разобраться как подставить в регулярку поиска письма по домену, который берём из переменной. Т.е. что бы регулярка выглядела так: (?<=>)https://ТУТ_ДОМЕН_ВЗЯТЫЙ_ИЗ_ПЕРЕМЕННОЙ.*(?=</a>) Потому что иначе снипет тянет ссылку не из того письма, видно, что новое письмо было открыто во входящих, но ссылку активации он выдаёт всегда первого письма из папки "Удалённые".

Вариант на данный момент:
Код:
Развернуть Свернуть Копировать
var mail = project.Variables["Mail"].Value;
var pass = project.Variables["Parol_ot_mila"].Value;
var mail_server = project.Variables["Email_server"].Value;
var mail_port = Convert.ToInt32(project.Variables["Email_port"].Value);
var regex = "(?<=>)https://.*(?=</a>)";
var res = ZennoPoster.MailConfirm("5;10;15", mail, pass, mail_server, mail_port, true, true, true, false, regex, regex,0);

/*if (res.ToString()=="") {
    res.Trim; }*/

Tab tb = instance.MainTab;
if ((tb.IsVoid) || (tb.IsNull)) return -1;
            if (tb.IsBusy) tb.WaitDownloading();
            tb.Navigate(res);
            if (tb.IsBusy) tb.WaitDownloading();     

/*instance.ActiveTab.Navigate(res, "");
if (instance.ActiveTab.IsBusy)
    instance.ActiveTab.WaitDownloading();*/
            return "23";
 
Оч нужная штука, через стандартный экшен почты, письма что-то совсем не ахти достаются. Help me please :bc:
 
+ очень долго
 
var regex = "https://"+project.Variables["domain"].value+"[^<]*?(?=</a)";
если корзина находится на первом месте в списке папок имап почты, то метод сначала заходит в удаленные, находит письмо и поэтому дальше не идет.
если возникает именно такая ситуация, то нужно использовать сторонние библиотеки для работы с имапом и учитывать название папок
подправил
 
Последнее редактирование:
  • Спасибо
Реакции: Malchishka
var regex = "https://"+project.Variables["dmain"]+"[^<]*?(?=</a)";
если корзина находится на первом месте в списке папок имап почты, то метод сначала заходит в удаленные, находит письмо и поэтому дальше не идет.
если возникает именно такая ситуация, то нужно использовать сторонние библиотеки для работы с имапом и учитывать название папок
Судя по тому, что и твоя строка не помогает "нужно использовать сторонние библиотеки для работы с имапом и учитывать название папок". Но спасибо и за это, теперь понятно откуда ноги растут, однако проблемы это не решает.

П.С. Я посмотрел, сколько почты не обрабатывает стандартный обработчик и офигел, валидная каптча уходит пачками в никуда. Други, давайте что-то придумаем, ибо дефолтный метод только разоряет, его кпд столь низок, что я просто поражаюсь, как до сих пор нету метода активации писем (на форуме), отдельного от стандартного.
 
Так экшен возвращает данные, но не те что нужно что ли? если объяснение LexxWork вам кажется соответствующим вашему запросу.
Код то по идее делает то же самое что и стандартный экшен. Как он может работать лучше не пойму.
 
Добрые люди подкинули другой снипет у которого логика немного иная, но потестировав его 2-е суток скажу, что КПД обработки писем со снипетом, мне кажется, несколько выше. Не буду врать, я и шаб слегонца подправил и логику, однако, на мой взгляд, логику стандартного обработчика писем нужно было бы оптимизировать.
Я понимаю, что наблюдение моё совсем не объективно, нужно было сделать рег по 100 каждым способом и посмотреть, что получится, однако не зареганными остались только "трудные варианты", поэтому проведу эксперимент чуть позже на других площадках. Тогда и скажу точно, а пока слова выше только домыслы да предположения, прошу не судить строго и не обижаться :-) возможно я и заблуждаюсь)
 
Ну просто метод то один и тот же. Другой вопрос что сейчас все ошибки связанные с почтой в логах в текущей версии выглядят как "не найдено письмо". При этом ошибки самого почтового сервера могут быть разные. С расширенными логами с которыми будет релиз скоро станет понятнее почему проблемы с почтой.
 
  • Спасибо
Реакции: Malchishka

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