![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Задумка написать почтовый клиент, который не будет скачивать письма на компьютер для прочтения в целях безопасности, а лишь будет оповещать о получении нового письма с выводом информации об отправителе, с возможностью перейти на сайт, удалить и т.д. вот собственно наброски кода, перепробовал разные варианты, в чем я ошибаюсь?
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var i,j: integer;
begin
timer1.Interval:=1000;
timer1.Enabled:=true;
POP3.Host:='pop3.mail.ru';
POP3.Port:=110;
POP3.Username:='ххх';
POP3.Password:='******';
pop3.Connect;
i:= pop3.CheckMessages;
if i>j then begin
showmessage('У вас новое сообщение!');
end;
j:=i;
pop3.Disconnect;
end;Последний раз редактировалось Admin, 29.07.2009 в 22:10. |
|
#2
|
||||
|
||||
|
Гм... а задать интервал и состояние таймера не проще при создании формы? а лучше - в Object Explorer?
Имхо, у тебя начальное состояние таймера - false, и он никогда не включится. |
|
#3
|
|||
|
|||
|
Идея в принципе не совсем правильная. Хотя в большинстве случаев может и сработать. Кто сказал, что за время между проверками, пользоваталь не удалит часть писем? Это раз.
Два. Ни где, ни в каких RFC не сказано, что между подключениями к серверу он должен сохранять порядок писем. Это так. Темы к размышлению ![]() |
|
#4
|
||||
|
||||
|
по моему такое делать не правильно!!!Т.к. я уже делал почтовые клиенты и знаю этот код лажа.
Причина: Конектится через каждую минуту к серваку это ппц будет грузить прогу (возможно зацикливание), ди потом где гарантия что он порграмма успеет приконектится к серверу и проверить почту за 1 сек? (Возможно веть такое что скорость нета маленькая). . Советую: Конект сделать допустим на 1 кнопочку. А в таймер запихать такое Код:
if pop3.connected then
if pop3.checkmessage>0 then ShowMessage('ура почтальном печкин приехал ;)') else ShowMessage('Нету писем =('); |
|
#5
|
||||
|
||||
|
timer1.Interval:=1000;
дык если каждую секунду проверять то забанят ) |
|
#6
|
|||
|
|||
|
Цитата:
этот код тоже не верный, т.к. pop3.checkmessage больше нуля, если ящик не пустой, а наличие новых сообщение подтверждается сравниванием настоящего значения с предыдущим |
|
#7
|
|||
|
|||
|
все работает вот код. Объявил j, как глобальную переменную в отдельном юните, обнулил ее в FormCreate. не подскажите какова допустимая частота подключения к почтовому серверу, раз в минуту допустим или чаще можно???
Код:
uses glob;
procedure TForm1.FormCreate(Sender: TObject);
begin
POP3.Host:='pop3.mail.ru';
POP3.Port:=110;
POP3.Username:='p-pp';
POP3.Password:='123456';
timer1.Interval:=10000;
timer1.Enabled:=true;
j:=0;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var i:integer;
begin
pop3.Connect;
i:= pop3.CheckMessages;
memo1.Lines.Add(inttostr(j)+' '+inttostr(i));
if i>j then begin
showmessage('У вас новое сообщение!');
j:=i;
end;
pop3.Disconnect;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
pop3.Disconnect;
end;Последний раз редактировалось Admin, 29.07.2009 в 22:10. |
|
#8
|
|||
|
|||
|
И так программа работает, если кому-то надо могу код выложить, осталось 2 вопроса:
(1) до первой проверки на наличие новых писем переменная j:=0, а значит если пришло письмо в момент, когда программа выключена, а затем я ее включил то сообщения о получении письма не будет, а если в сравнении убрать and (j<>0), то при первом включении всегда будет одно лишнее сообщение Цитата:
(2) программа письма на комп не скачивает, а значит нужна возможность по нажатии определенной кнопки перейти на почтовый сервер, так вот вопрос: как сделать так, чтобы поля логин и пароль брались из эдитов и шаг авторизации пропускался, т.е. мне надо сразу попасть во входящие на mail.ru например |
|
#9
|
||||
|
||||
|
1 - храни последнее значение в реестре...
2 - это уже можно поиграть с MRIM, используя автовход из агента... или (что проще) посмотреть HTML код формы входа, и от этого плясать... |
|
#10
|
|||
|
|||
|
Мои 2 копейки.
По вопросу #2. А что тебе мешает получить письмо через тот же компонент и показать пользователю? |
|
#11
|
|||
|
|||
|
с первым разобрался либо файл, либо реестр, по поводу второго, тоже думал в сторону HTML, качать письма не хочу принципиально, в целях безопасности, т.к. если письмо с вирем попадает на комп, то это не есть гуд, да и спам многочисленный...
|
|
#12
|
|||
|
|||
|
вот наткнулся на интересную статью по поводу авторизации
http://pblog.ru/?p=420 все прекрасно работает, но как сделать, чтоб по нажатии на кнопку открывалась скажем, страница входящие Код:
procedure TForm5.btn1Click(Sender: TObject);
var params,responseres:tstringlist;
begin
params:=TStringList.Create;
responseres:=TStringList.Create;
try
params.Add('Login=programmers');
params.Add('Domain=mail.ru');
params.Add('Password=1234');
responseres.Text:=http1.Post('http://win.mail.ru/cgi-bin/auth',params);
if Pos('logout',responseres.Text)>0 then
ShowMessage('Авторизовались!');
finally
params.free;
responseres.free;
end;
end;Последний раз редактировалось Admin, 29.07.2009 в 22:11. |