Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 6
1

Вопрос по обработке исключения smtp.Authenticate()

03.04.2011, 09:19. Показов 2090. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток!
Народ, кто знает, подскажите плиз как запретить (если такое вообще возможно) сообщение типа
"Incorrect authentication data" возникающее при исполнении следующего участка кода программы:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
// 
smtp:=TIdSMTP.Create(nil);
smtp.AuthenticationType:=atlogin;
smtp.Username:='My_mail_one@mail.ru'; // ящик
smtp.Password:='my_password';         //  специально неправильный пароль
smtp.Host:= 'smtp.mail.ru';
smtp.Port:=25;
smtp.Connect();                             // коннектимся
 
if smtp.Authenticate() then               // ГЛАВНОЕ: если все нормально то сработает
  showmessage('Все нормально, это хороший пароль') // вот эта строка, НО
else                                              // если что-то не так с smtp.Authenticate() 
  showmessage('Не... пароль не тот...'); // то эта строка НЕ ВЫПОЛНИТСЯ
а не выполнится она так как на экран выйдет сообщение с текстом "Incorrect authentication data" и пользователю придется щелкать на Ок. То есть выходит что в случае
ошибки аутентификации процедура, как бы, обрывается и дальнейший код уже не исполнится. Почему?
Как реализовать код который бы самостоятельно перебирал пароли и в случае если очередной таковой неверный не выводил бы на экран "Incorrect authentication data" , а продолжил бы выполнение?
Может Indy тут вообще не помощник?

P.S. smtp.Authenticate() возвращает True or False

Заранее сп.
If I very stupid - that speaks this not too aloud

Добавлено через 10 минут
P.S. 2
Кстати, пока писАл подумал о том что быть может одним из вариантов может быть OllyDebuger - вероятно, что можно отловить тот момент когда вызывается MessageBoxA(или другая функция которая используется в этом случае) и "заNOPить" его. Но из этого тоже ничего почему то не получается кроме очередой ошибки.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2011, 09:19
Ответы с готовыми решениями:

Ошибка Mailer Error: SMTP Error: Could not authenticate
Вот код require'PHPMailer/class.phpmailer.php'; //require'includes/messege.php'; $mail = new...

Прекращение выполнения программы при обработке исключения
Всем привет. Возник такой момент - в программе зачастую необходимо отлавливать исключения и...

Вопрос о SMTP
Всем привет. Я писал программу которая отправляет сообщение от одного почтового ящика на другой,...

Вопрос по обработке изображения
Я получил от своего преподавателя следующее задание по обработке изображений. Есть черная...

2
3218 / 2361 / 540
Регистрация: 11.09.2009
Сообщений: 8,601
04.04.2011, 02:06 2
Hopi, попробуй стандартный ход:

Delphi
1
2
3
4
5
6
7
8
9
10
var OK: boolean;
...
try
OK:= smtp.Authenticate();
except
  // тут пусто, то есть при ошибке ничего не происходит
end;
if OK then showmessage('Все нормально, это хороший пароль') // вот эта строка, НО
else // если что-то не так с smtp.Authenticate() 
showmessage('Не... пароль не тот...');
0
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 6
06.04.2011, 06:50  [ТС] 3
спасиб. Но тоже не работает. Исключение не работает, так как компилятор до него, как бы не доходит - после отработки соообщения о неверных данных - бах - и полный выход из процедуры вообще (проверил тем что далее разместил стандартный showMessage('') ниже того участка, - но так его и не дождался - процедура обрывается и функция проверки не возвращает управление). Получилось отловить MesssgeBoxA в Olly и перепрыгнуть, теперь сообщение о неправильных данных не выскакивает, но от этого тоже проку мало - чтобы вызвать процедуру снова нужно тыкать на кнопку, а это не удобно - хотелось бы чтобы программа перебирала пароли до тех пор пока не найдет нужный вариант, без нажатия. был вариант с тем, чтобы после заNOPинного messageBoxA очистить стек, затем заполнить его так каким он есть на момент начала процедуры и jmp'нуть на адрес начала процедуры, - теоретически (восстановив регитры конечно аналогичным образом) получился бы беспрерывный цикл единственным вариантом выхода из которого былбы правильный пароль. Но это теория. На практике (а я слаб в низкоуровневых прибомбасах) я разместил определение сотни переменных (для того чтобы в olly потом на этом месте вписать свой assembler'ный код по очистке востановлению и прыжку) но когда дошел до этого самого места - мама, дорогая, - стек настолько велик, что отпало желание его вообще трогать и восстанавливать - иначе три дня можно убить при очень сомнительном проценте успеха. Ладно, буду думать дальше. Все же прогресс всегда находит новые пути развития.
0
06.04.2011, 06:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2011, 06:50
Помогаю со студенческими работами здесь

Вопрос по обработке строки в С
Привет всем! Пишу программу на STM8 под IAR. Вопрос следующий, если у меня есть массив принятый...

Вопрос По Обработке Сравнения Баз
Возникла нужда в обработке сравнения одинаковых баз (например текущей и недельного бекапа). Цель...

Исключения:: вопрос
Прошу консультации по теоретическому вопросу. Фрагмент кода #include <cstdlib> #include...

Вопрос по обработке бита ожидания в EXTI и NVIC
Описание ситуации. У меня устанавливается бит ожидания EXTI, дальше автоматически устанавливается...

Вопрос по обработке исходного кода интернет-страницы.
Сама задача состоит в том, чтобы вывести таблицу, сколько раз каждое слово повторяется в тексте....

Вопрос про исключения и DateTime
Добрый вечер. Я бы хотел задать 2 вопроса, если можете помогите пожалуйста))) 1) Какое условие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru