Форум: "Сети";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];
ВнизПроверка мыла на наличие новых писем Найти похожие ветки
← →
Ramon © (2004-10-22 15:36) [0]Как проверить не пришло ли что-нибудь,и если пришло,то как забрать?
← →
Smithson (2004-10-22 15:40) [1]Поставт себе Indy (http://www.nevrona.com/Indy/download/Files/Indy9.html) и смотри на idSMTP.
← →
Reindeer Moss Eater © (2004-10-22 15:45) [2]Долго же ему смотреть придется.
← →
ИМХО © (2004-10-22 15:49) [3]idSMTP - отправка, ему нужОн POP
← →
Ramon © (2004-10-22 15:50) [4]Если честно,я не понял ничего.Можно поподробнее.И как это сделать сделать средствами делфей?
← →
Владислав © (2004-10-22 15:55) [5]Компонент есть такой из библиотеки Indy. IdPOP3 называется. Ссылку указали в [1]
← →
Digitman © (2004-10-22 15:58) [6]
> Ramon
срочно дуй сюда - http://book.itep.ru , разделы POP3, SMTP
читать-вникать до полного просветления, какой протокол и за каким хреном используется кл.стороной, а какой - серверной
← →
Smithson (2004-10-22 16:00) [7]Каюсь, стормозил. Спать охота, сил нету...
← →
Rouse_ © (2004-10-22 21:37) [8]Когда то давным давно, когда инет был очень тяжелый и за одну сессию письма не выкачивались из ящика по причине разрыва соединения, наваял я для себя сей манускрипт, который смотрел количество писем в ящике и при желании сносил их от туда:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
GroupBox1: TGroupBox;
Button1: TButton;
Memo1: TMemo;
ClientSocket1: TClientSocket;
Edit2: TEdit;
Label3: TLabel;
Button2: TButton;
Label4: TLabel;
Edit4: TEdit;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure Button2Click(Sender: TObject);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure Button3Click(Sender: TObject);
public
Step: Integer;
MailCount: Integer;
CurrentMail: Integer;
NoDel: Boolean;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
NoDel := True;
Step := 0;
Memo1.Lines.Clear;
ClientSocket1.Host := Edit1.Text;
try
ClientSocket1.Port := StrToInt(Edit4.Text);
except
Memo1.Lines.Add("Неверный порт");
Exit;
end;
ClientSocket1.Active := True;
Memo1.Lines.Add("Соединяюсь с " + Edit1.Text);
Edit1.Enabled := False;
Edit2.Enabled := False;
Edit3.Enabled := False;
Edit4.Enabled := False;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if MessageBoxEx(Handle, "Удалить все письма из почтового ящика?",
"Подтверждение...", MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2,
LANG_NEUTRAL) = IDNO then Exit;
NoDel := False;
Step := 0;
Memo1.Lines.Clear;
ClientSocket1.Host := Edit1.Text;
try
ClientSocket1.Port := StrToInt(Edit4.Text);
except
Memo1.Lines.Add("Неверный порт");
Exit;
end;
ClientSocket1.Active := True;
Memo1.Lines.Add("Соединяюсь с " + Edit1.Text);
Edit1.Enabled := False;
Edit2.Enabled := False;
Edit3.Enabled := False;
Edit4.Enabled := False;
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
Txt: String;
Parser: TStringList;
begin
Txt := Socket.ReceiveText;
//Memo1.Lines.Add("<<< "+Txt);
if Txt[1] = "-" then
begin
Memo1.Lines.Add("Ошибка!!!");
Socket.SendText("QUIT");
ClientSocket1.Active := False;
MailCount := 0;
CurrentMail := 0;
Step := 0;
Exit;
end;
if Txt[1] <> "+" then Exit;
case Step of
0:
begin
Inc(Step);
Memo1.Lines.Add("Аутентификация:"+#13#10+#13#10+"Отправка имени пользователя...");
Txt := "USER " + Edit2.Text + #10#13;
Socket.SendText(Txt);
end;
1:
begin
Inc(Step);
Memo1.Lines.Add("Отправка пароля...");
Txt := "PASS " + Edit3.Text + #10#13;
Memo1.Lines.Add(">>> "+Txt);
Socket.SendText(Txt);
end;
2:
begin
Memo1.Lines.Add("Аутентификация успешна");
Inc(Step);
Memo1.Lines.Add("Получения количества писем...");
Txt := "STAT" + #10#13;
Socket.SendText(Txt);
end;
3:
begin
Parser := TStringList.Create;
Parser.Text := StringReplace(Txt, " ", #13#10, [rfReplaceAll]);
MailCount := StrToInt(Parser.Strings[1]);
if MailCount = 0 then
begin
Memo1.Lines.Add("Письма в почтовом ящике отсутствуют");
ClientSocket1.Active := False;
Exit;
end;
Memo1.Lines.Add("Писем в почтовом ящике: " + Parser.Strings[1]);
Memo1.Lines.Add("Их общий размер: " + Parser.Strings[2] + #13#10);
Parser.Free;
if NoDel then
begin
ClientSocket1.Active := False;
Exit;
end;
Inc(Step);
CurrentMail := 1;
Memo1.Lines.Add("Приступаю к удалению...");
Memo1.Lines.Add("Запрос на удаление письма №" + IntToStr(CurrentMail) + "...");
Txt := "DELE " + IntToStr(CurrentMail) + #10#13;
Socket.SendText(Txt);
end;
4:
begin
Memo1.Lines.Add("Принят");
if CurrentMail < MailCount then
begin
Inc(CurrentMail);
Memo1.Lines.Add("Запрос на удаление письма №" + IntToStr(CurrentMail) + "...");
Txt := "DELE " + IntToStr(CurrentMail) + #10#13;
Socket.SendText(Txt);
end
else
begin
Inc(Step);
Memo1.Lines.Add("Все запросы завершены");
Memo1.Lines.Add("Подтверждаю удаление...");
Txt := "QUIT" + #10#13;
Socket.SendText(Txt);
end;
end;
5:
begin
Memo1.Lines.Add("Удаление завершено");
Memo1.Lines.Add("Удалено писем: " + IntToStr(MailCount));
ClientSocket1.Active := False;
end;
end;
end;
procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add("Соединение установлено");
end;
procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add("Соединение завершено");
Edit1.Enabled := True;
Edit2.Enabled := True;
Edit3.Enabled := True;
Edit4.Enabled := True;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ClientSocket1.Active := False;
end;
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if not(Key in ["0".."9", #8]) then Key := #0;
end;
procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
Memo1.Lines.Add("Ошибка!!!");
ErrorCode := 0;
end;
end.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.032 c