![]() |
|
|
Регистрация | << Правила форума >> | 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, и он никогда не включится. Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
|||
|
|||
![]() Идея в принципе не совсем правильная. Хотя в большинстве случаев может и сработать. Кто сказал, что за время между проверками, пользоваталь не удалит часть писем? Это раз.
Два. Ни где, ни в каких RFC не сказано, что между подключениями к серверу он должен сохранять порядок писем. Это так. Темы к размышлению ![]() |
#4
|
||||
|
||||
![]() по моему такое делать не правильно!!!Т.к. я уже делал почтовые клиенты и знаю этот код лажа.
Причина: Конектится через каждую минуту к серваку это ппц будет грузить прогу (возможно зацикливание), ди потом где гарантия что он порграмма успеет приконектится к серверу и проверить почту за 1 сек? (Возможно веть такое что скорость нета маленькая). . Советую: Конект сделать допустим на 1 кнопочку. А в таймер запихать такое Код:
if pop3.connected then if pop3.checkmessage>0 then ShowMessage('ура почтальном печкин приехал ;)') else ShowMessage('Нету писем =('); [ iNewStar.Ru ] - Продам! Вопросы в ПМ |
#5
|
||||
|
||||
![]() timer1.Interval:=1000;
дык если каждую секунду проверять то забанят ) Делаю курсовые и лабораторные на Delphi, GPSS, Assembler, C++. Заказать и почитать отзывы можно на сайте, который указан в этой теме Дешево! |
#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 код формы входа, и от этого плясать... Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#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. |