Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2008, 12:07   #1
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию Отправка через SMTP

При отправке почты через компоненты IdSMTP и IdMessage прога типа виснет... Сообщение отправляется, в конце ShowMessage пишет 'Отправлено'.
Как сделать, чтобы отправка производилась без зависания главного окна?

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
Mess : TIdMessage;
n, i : integer;
begin
Mess := TidMessage.Create(Form1);
IdSmtp1.Host := HostEdit.Text;
IdSmtp1.Username := LoginEdit.Text;
IdSmtp1.Password := PassEdit.Text;
IdSmtp1.Connect;
n := mailMemo.Lines.Count;
if IdSmtp1.Connected then begin
for i := 0 to n do begin
if length(MailMemo.Lines.Strings[i]) > 0 then begin
Mess.Recipients.EMailAddresses := Mailmemo.Lines.Strings[i];
mess.from.Address := AdressEdit.Text;
mess.from.Name := NameEdit.Text;
mess.Body.Text := BodyMessage.Lines.Text;
mess.Subject := Edit1.Text;
//Отправляем мессагу
IdSmtp1.Send(mess); end;
end;
ShowMessage('Сообщения отправлены успешно'); end;
IdSmtp1.Disconnect;
end;
З.Ы. Я только начинаю изучать делфи, поэтому может быть выглядит примитивно
Hottabych вне форума Ответить с цитированием
Старый 09.02.2008, 12:13   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Зависание обсуловлено блокирующим сокетом. Попробуйте "бросить" на форму компонент IdAntiFreeze
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 09.02.2008, 12:55   #3
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

Кинул на форму энтот компонент, прога не зависает, но все компоненты все равно неактивные... Вообще как его, IdAntiFreeze, юзать (свойства и тп)?
Hottabych вне форума Ответить с цитированием
Старый 09.02.2008, 15:18   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Во время коннекта просто выводите сообщение мол идет подключение... чтобы пользователь понимал. А прямо перед подключением принудительно дизейблите все компоненты, тогда подобная проблема станет джостаточно хорошо обернута.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что такое SMTP? Titan123 Свободное общение 5 18.06.2011 15:57
написание SMTP сервера BlackOmen Работа с сетью в Delphi 1 09.07.2008 18:49
Отправка почты (smtp) через proxy dimonbest Работа с сетью в Delphi 9 20.06.2008 14:07
Простой SMTP-сервер SlIgor Помощь студентам 3 09.06.2008 20:47
Отправка e-mail через JavaScript Gambler Общие вопросы по Java, Java SE, Kotlin 1 30.05.2007 14:03