home *** CD-ROM | disk | FTP | other *** search
/ Delphi Anthology / aDELPHI.iso / Runimage / Delphi50 / Demos / FastNet / Pop3 / pop3dem.pas < prev    next >
Pascal/Delphi Source File  |  1999-08-11  |  7KB  |  250 lines

  1. ///////////////////////////////////////////////////////////////////////////
  2. //                                                                       //
  3. // Copyright ⌐ 1997-1998, NetMasters, L.L.C                              //
  4. //  - All rights reserved worldwide. -                                   //
  5. //  Portions may be Copyright ⌐ Inprise.                                 //
  6. //                                                                       //
  7. // POP3 Demo Unit 1:  (UNIT1.PAS)                                        //
  8. //                                                                       //
  9. // DESCRIPTION:                                                          //
  10. //                                                                       //
  11. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY //
  12. // KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE   //
  13. // IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR //
  14. // PURPOSE.                                                              //
  15. //                                                                       //
  16. ///////////////////////////////////////////////////////////////////////////
  17. //
  18. // Revision History
  19. //
  20. //                                                                       //
  21. ///////////////////////////////////////////////////////////////////////////
  22. unit Pop3Dem;
  23.  
  24. interface
  25.  
  26. uses
  27.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  28.   StdCtrls, ComCtrls, Psock, NMpop3, ExtCtrls;
  29.  
  30. type
  31.   TForm1 = class(TForm)
  32.     PageControl1: TPageControl;
  33.     TabSheet1: TTabSheet;
  34.     TabSheet2: TTabSheet;
  35.     Edit1: TEdit;
  36.     Edit2: TEdit;
  37.     NMPOP31: TNMPOP3;
  38.     Label1: TLabel;
  39.     Label2: TLabel;
  40.     Edit3: TEdit;
  41.     Edit4: TEdit;
  42.     Label3: TLabel;
  43.     Label4: TLabel;
  44.     Button1: TButton;
  45.     Button2: TButton;
  46.     StatusBar1: TStatusBar;
  47.     Memo1: TMemo;
  48.     Panel1: TPanel;
  49.     Button3: TButton;
  50.     Edit5: TEdit;
  51.     Label5: TLabel;
  52.     Memo2: TMemo;
  53.     Label6: TLabel;
  54.     Label7: TLabel;
  55.     Edit6: TEdit;
  56.     Label8: TLabel;
  57.     Edit7: TEdit;
  58.     Label9: TLabel;
  59.     Label10: TLabel;
  60.     TabSheet3: TTabSheet;
  61.     Label11: TLabel;
  62.     Memo3: TMemo;
  63.     Button4: TButton;
  64.     Button5: TButton;
  65.     Edit8: TEdit;
  66.     Label12: TLabel;
  67.     Edit9: TEdit;
  68.     Label13: TLabel;
  69.     Button6: TButton;
  70.     Button7: TButton;
  71.     procedure Button1Click(Sender: TObject);
  72.     procedure Button2Click(Sender: TObject);
  73.     procedure NMPOP31Connect(Sender: TObject);
  74.     procedure NMPOP31Disconnect(Sender: TObject);
  75.     procedure NMPOP31Status(Sender: TComponent; Status: String);
  76.     procedure Button3Click(Sender: TObject);
  77.     procedure NMPOP31ConnectionFailed(Sender: TObject);
  78.     procedure NMPOP31ConnectionRequired(var handled: Boolean);
  79.     procedure NMPOP31Failure(Sender: TObject);
  80.     procedure NMPOP31HostResolved(Sender: TComponent);
  81.     procedure NMPOP31InvalidHost(var handled: Boolean);
  82.     procedure NMPOP31List(Msg, Size: Integer);
  83.     procedure NMPOP31Reset(Sender: TObject);
  84.     procedure NMPOP31Success(Sender: TObject);
  85.     procedure Button4Click(Sender: TObject);
  86.     procedure Button5Click(Sender: TObject);
  87.     procedure Button6Click(Sender: TObject);
  88.     procedure Button7Click(Sender: TObject);
  89.     procedure NMPOP31PacketRecvd(Sender: TObject);
  90.     procedure NMPOP31RetrieveEnd(Sender: TObject);
  91.     procedure NMPOP31RetrieveStart(Sender: TObject);
  92.   private
  93.     { Private declarations }
  94.   public
  95.     { Public declarations }
  96.   end;
  97.  
  98. var
  99.   Form1: TForm1;
  100.  
  101. implementation
  102.  
  103. {$R *.DFM}
  104.  
  105. procedure TForm1.Button1Click(Sender: TObject);
  106. begin
  107.   NMPOP31.AttachFilePath := '.';
  108.   NMPOP31.DeleteOnRead := FALSE;
  109.   NMPOP31.ReportLevel := Status_Basic;
  110.   NMPOP31.TimeOut := 20000;
  111.   NMPOP31.Host := Edit1.Text;
  112.   NMPOP31.Port := StrToInt(Edit2.Text);
  113.   NMPOP31.UserID := Edit3.Text;
  114.   NMPOP31.Password := Edit4.Text;
  115.   NMPOP31.Connect;
  116.   Label10.caption := '# of Messages: '+IntToStr(NMPOP31.MailCount);
  117. end;
  118.  
  119. procedure TForm1.Button2Click(Sender: TObject);
  120. begin
  121.   NMPOP31.Disconnect;
  122. end;
  123.  
  124. procedure TForm1.NMPOP31Connect(Sender: TObject);
  125. begin
  126.   StatusBar1.SimpleText := 'Connected';
  127. end;
  128.  
  129. procedure TForm1.NMPOP31Disconnect(Sender: TObject);
  130. begin
  131.   If StatusBar1 <> nil then
  132.     StatusBar1.SimpleText := 'Disconnected';
  133. end;
  134.  
  135. procedure TForm1.NMPOP31Status(Sender: TComponent; Status: String);
  136. begin
  137.   If StatusBar1 <> nil then
  138.     StatusBar1.SimpleText := status;
  139. end;
  140.  
  141. procedure TForm1.Button3Click(Sender: TObject);
  142.  
  143.  var i:integer;
  144. begin
  145.   for i:=1 to 500 do
  146.      NMPOP31.GetMailMessage(StrToInt(Edit5.Text));
  147.   Edit6.Text := NMPOP31.MailMessage.From;
  148.   Edit7.Text := NMPOP31.MailMessage.Subject;
  149.   Edit9.Text := NMPOP31.MailMessage.MessageID;
  150.   Memo2.Lines.Assign(NMPOP31.MailMessage.Head);
  151.   Memo1.Lines.Assign(NMPOP31.MailMessage.Body);
  152.   If NMPOP31.MailMessage.Attachments.Text <> '' then
  153.     ShowMessage('Attachments:'+#10#13+NMPOP31.MailMessage.Attachments.Text);
  154. end;
  155.  
  156. procedure TForm1.NMPOP31ConnectionFailed(Sender: TObject);
  157. begin
  158.   ShowMessage('Connection Failed');
  159. end;
  160.  
  161. procedure TForm1.NMPOP31ConnectionRequired(var handled: Boolean);
  162. begin
  163.   If MessageDlg('Connection Required. Connect?', mtConfirmation, mbOkCancel, 0) = mrOk then
  164.   Begin
  165.     Handled := TRUE;
  166.     NMPOP31.Connect;
  167.   End;
  168. end;
  169.  
  170. procedure TForm1.NMPOP31Failure(Sender: TObject);
  171. begin
  172.   ShowMessage('Operation failed');
  173. end;
  174.  
  175. procedure TForm1.NMPOP31HostResolved(Sender: TComponent);
  176. begin
  177.   StatusBar1.SimpleText := 'Host Resolved';
  178. end;
  179.  
  180. procedure TForm1.NMPOP31InvalidHost(var handled: Boolean);
  181. var
  182.   TmpStr: String;
  183. begin
  184.   If InputQuery('Invalid Host!', 'Specify a new host:', TmpStr) then
  185.   Begin
  186.     NMPOP31.Host := TmpStr;
  187.     Handled := TRUE;
  188.   End;
  189. end;
  190.  
  191. procedure TForm1.NMPOP31List(Msg, Size: Integer);
  192. begin
  193.   Memo3.Lines.Add(IntToStr(Msg)+' / '+IntToStr(Size));
  194. end;
  195.  
  196. procedure TForm1.NMPOP31Reset(Sender: TObject);
  197. begin
  198.   ShowMessage('Delete Flags Reset');
  199. end;
  200.  
  201. procedure TForm1.NMPOP31Success(Sender: TObject);
  202. begin
  203.   StatusBar1.SimpleText := 'Operation successful';
  204. end;
  205.  
  206. procedure TForm1.Button4Click(Sender: TObject);
  207. begin
  208.   Memo3.Clear;
  209. end;
  210.  
  211. procedure TForm1.Button5Click(Sender: TObject);
  212. begin
  213.   NMPOP31.List;
  214. end;
  215.  
  216.  
  217. procedure TForm1.Button6Click(Sender: TObject);
  218. begin
  219.   NMPOP31.GetSummary(StrToInt(Edit5.Text));
  220.   Edit6.Text := NMPOP31.Summary.From;
  221.   Edit7.Text := NMPOP31.Summary.Subject;
  222.   Edit8.Text := IntToStr(NMPOP31.Summary.Bytes);
  223.   Edit9.Text := NMPOP31.Summary.MessageID;
  224.   Memo2.Lines.Assign(NMPOP31.Summary.Header);
  225. end;
  226.  
  227. procedure TForm1.Button7Click(Sender: TObject);
  228. begin
  229.   NMPOP31.DeleteMailMessage(StrToint(Edit5.Text));
  230. end;
  231.  
  232. procedure TForm1.NMPOP31PacketRecvd(Sender: TObject);
  233. begin
  234.   StatusBar1.SimpleText := IntToStr(NMPOP31.BytesRecvd)+' bytes of '+IntToStr(NMPOP31.BytesTotal)+' received';
  235. end;
  236.  
  237. procedure TForm1.NMPOP31RetrieveEnd(Sender: TObject);
  238. begin
  239.   Form1.Cursor := crDefault;
  240.   StatusBar1.SimpleText := 'Retrieval end';
  241. end;
  242.  
  243. procedure TForm1.NMPOP31RetrieveStart(Sender: TObject);
  244. begin
  245.   Form1.Cursor := crHourGlass;
  246.   StatusBar1.SimpleText := 'Retrieval start';
  247. end;
  248.  
  249. end.
  250.