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

  1. ///////////////////////////////////////////////////////////////////////////
  2. //                                                                       //
  3. // Copyright ⌐ 1997-1998, NetMasters, L.L.C                              //
  4. //  - All rights reserved worldwide. -                                   //
  5. //  Portions may be Copyright ⌐ Inprise.                                 //
  6. //                                                                       //
  7. // SMTP 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 smtpdem;
  23.  
  24. interface
  25.  
  26. uses
  27.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  28.   ComCtrls, StdCtrls, Psock, NMsmtp, ExtCtrls;
  29.  
  30. type
  31.   TForm1 = class(TForm)
  32.     PageControl1: TPageControl;
  33.     TabSheet1: TTabSheet;
  34.     TabSheet2: TTabSheet;
  35.     TabSheet3: TTabSheet;
  36.     Edit1: TEdit;
  37.     NMSMTP1: TNMSMTP;
  38.     Label1: TLabel;
  39.     Edit2: TEdit;
  40.     Label2: TLabel;
  41.     Button1: TButton;
  42.     Button2: TButton;
  43.     TabSheet4: TTabSheet;
  44.     StatusBar1: TStatusBar;
  45.     Edit3: TEdit;
  46.     Label3: TLabel;
  47.     Button3: TButton;
  48.     Edit4: TEdit;
  49.     Label4: TLabel;
  50.     Memo1: TMemo;
  51.     Panel1: TPanel;
  52.     GroupBox1: TGroupBox;
  53.     Edit5: TEdit;
  54.     Edit6: TEdit;
  55.     Label5: TLabel;
  56.     Label6: TLabel;
  57.     Edit7: TEdit;
  58.     Label7: TLabel;
  59.     Edit8: TEdit;
  60.     Label8: TLabel;
  61.     Edit9: TEdit;
  62.     Label9: TLabel;
  63.     ListBox1: TListBox;
  64.     Label10: TLabel;
  65.     Button4: TButton;
  66.     Button5: TButton;
  67.     Memo2: TMemo;
  68.     Panel2: TPanel;
  69.     Button6: TButton;
  70.     Label11: TLabel;
  71.     Panel3: TPanel;
  72.     Label14: TLabel;
  73.     Button7: TButton;
  74.     Label12: TLabel;
  75.     OpenDialog1: TOpenDialog;
  76.     Edit10: TEdit;
  77.     Edit11: TEdit;
  78.     procedure Button1Click(Sender: TObject);
  79.     procedure Button3Click(Sender: TObject);
  80.     procedure Button2Click(Sender: TObject);
  81.     procedure NMSMTP1Connect(Sender: TObject);
  82.     procedure NMSMTP1Disconnect(Sender: TObject);
  83.     procedure NMSMTP1Status(Sender: TComponent; Status: String);
  84.     procedure Button4Click(Sender: TObject);
  85.     procedure Button5Click(Sender: TObject);
  86.     procedure Button6Click(Sender: TObject);
  87.     procedure NMSMTP1EncodeStart(Filename: String);
  88.     procedure NMSMTP1EncodeEnd(Filename: String);
  89.     procedure Button7Click(Sender: TObject);
  90.     procedure NMSMTP1MailListReturn(MailAddress: String);
  91.     procedure NMSMTP1ConnectionFailed(Sender: TObject);
  92.     procedure NMSMTP1ConnectionRequired(var handled: Boolean);
  93.     procedure NMSMTP1Failure(Sender: TObject);
  94.     procedure NMSMTP1HostResolved(Sender: TComponent);
  95.     procedure NMSMTP1InvalidHost(var handled: Boolean);
  96.     procedure NMSMTP1PacketSent(Sender: TObject);
  97.     procedure NMSMTP1RecipientNotFound(Recipient: String);
  98.     procedure NMSMTP1SendStart(Sender: TObject);
  99.     procedure NMSMTP1Success(Sender: TObject);
  100.     procedure NMSMTP1HeaderIncomplete(var handled: Boolean;
  101.       hiType: Integer);
  102.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  103.   private
  104.     { Private declarations }
  105.   public
  106.     { Public declarations }
  107.   end;
  108.  
  109. var
  110.   Form1: TForm1;
  111.  
  112. implementation
  113.  
  114. {$R *.DFM}
  115.  
  116. procedure TForm1.Button1Click(Sender: TObject);
  117. begin
  118.   NMSMTP1.Host := Edit1.Text;
  119.   NMSMTP1.Port := StrToInt(Edit2.Text);
  120.   NMSMTP1.UserID := Edit4.Text;
  121.   NMSMTP1.Connect;
  122. end;
  123.  
  124. procedure TForm1.Button3Click(Sender: TObject);
  125. var
  126.   TmpStr: String;
  127. begin
  128.   TmpStr := Edit3.Text; // Do this so the user can't change the edit box.
  129.   If NMSMTP1.Verify(TmpStr) then
  130.     ShowMessage(TmpStr+' verified')
  131.   else
  132.     ShowMessage(TmpStr+' not verified');
  133. end;
  134.  
  135. procedure TForm1.Button2Click(Sender: TObject);
  136. begin
  137.   NMSMTP1.Disconnect;
  138. end;
  139.  
  140. procedure TForm1.NMSMTP1Connect(Sender: TObject);
  141. begin
  142.   StatusBar1.SimpleText := 'Connected';
  143. end;
  144.  
  145. procedure TForm1.NMSMTP1Disconnect(Sender: TObject);
  146. begin
  147.   If StatusBar1 <> nil then
  148.     StatusBar1.SimpleText := 'Disconnected';
  149. end;
  150.  
  151. procedure TForm1.NMSMTP1Status(Sender: TComponent; Status: String);
  152. begin
  153.   If StatusBar1 <> nil then
  154.     StatusBar1.SimpleText := status;
  155. end;
  156.  
  157. procedure TForm1.Button4Click(Sender: TObject);
  158. begin
  159.   If OpenDialog1.Execute then
  160.     ListBox1.Items.Add(OpenDialog1.FileName);
  161. end;
  162.  
  163. procedure TForm1.Button5Click(Sender: TObject);
  164. begin
  165.   ListBox1.Items.Delete(ListBox1.ItemIndex);
  166. end;
  167.  
  168. procedure TForm1.Button6Click(Sender: TObject);
  169. begin
  170.   NMSMTP1.PostMessage.FromAddress := Edit6.Text;
  171.   NMSMTP1.PostMessage.FromName := Edit5.Text;
  172.   NMSMTP1.PostMessage.Subject := Edit10.Text;
  173.   NMSMTP1.PostMessage.ToAddress.Add(Edit7.Text);
  174.   NMSMTP1.PostMessage.ToBlindCarbonCopy.Add(Edit9.Text);
  175.   NMSMTP1.PostMessage.ToCarbonCopy.Add(Edit8.Text);
  176.   NMSMTP1.PostMessage.Attachments.AddStrings(Listbox1.Items);
  177.   NMSMTP1.PostMessage.Body.Assign(Memo1.Lines);
  178.   NMSMTP1.SendMail;
  179. end;
  180.  
  181. procedure TForm1.NMSMTP1EncodeStart(Filename: String);
  182. begin
  183.   StatusBar1.SimpleText := 'Encoding '+Filename;
  184. end;
  185.  
  186. procedure TForm1.NMSMTP1EncodeEnd(Filename: String);
  187. begin
  188.   StatusBar1.SimpleText := 'Finished encoding '+Filename;
  189. end;
  190.  
  191. procedure TForm1.Button7Click(Sender: TObject);
  192. begin
  193.   NMSMTP1.ExpandList(Edit11.Text);
  194. end;
  195.  
  196. procedure TForm1.NMSMTP1MailListReturn(MailAddress: String);
  197. begin
  198.   Memo2.Lines.Add(MailAddress);
  199. end;
  200.  
  201. procedure TForm1.NMSMTP1ConnectionFailed(Sender: TObject);
  202. begin
  203.   ShowMessage('Connection Failed');
  204. end;
  205.  
  206. procedure TForm1.NMSMTP1ConnectionRequired(var handled: Boolean);
  207. begin
  208.   If MessageDlg('Connection Required. Connect?', mtConfirmation, mbOkCancel, 0) = mrOk then
  209.   Begin
  210.     Handled := TRUE;
  211.     NMSMTP1.Connect;
  212.   End;
  213. end;
  214.  
  215. procedure TForm1.NMSMTP1Failure(Sender: TObject);
  216. begin
  217.   StatusBar1.SimpleText := 'Failure';
  218. end;
  219.  
  220. procedure TForm1.NMSMTP1HostResolved(Sender: TComponent);
  221. begin
  222.   StatusBar1.SimpleText := 'Host Resolved';
  223. end;
  224.  
  225. procedure TForm1.NMSMTP1InvalidHost(var handled: Boolean);
  226. var
  227.   TmpStr: String;
  228. begin
  229.   If InputQuery('Invalid Host!', 'Specify a new host:', TmpStr) then
  230.   Begin
  231.     NMSMTP1.Host := TmpStr;
  232.     Handled := TRUE;
  233.   End;
  234. end;
  235.  
  236. procedure TForm1.NMSMTP1PacketSent(Sender: TObject);
  237. begin
  238.   StatusBar1.SimpleText := IntToStr(NMSMTP1.BytesSent)+' bytes of '+IntToStr(NMSMTP1.BytesTotal)+' sent';
  239. end;
  240.  
  241. procedure TForm1.NMSMTP1RecipientNotFound(Recipient: String);
  242. begin
  243.   ShowMessage('Recipient "'+Recipient+'" not found');
  244. end;
  245.  
  246. procedure TForm1.NMSMTP1SendStart(Sender: TObject);
  247. begin
  248.   StatusBar1.simpleText := 'Sending message';
  249. end;
  250.  
  251. procedure TForm1.NMSMTP1Success(Sender: TObject);
  252. begin
  253.   StatusBar1.SimpleText := 'Success';
  254. end;
  255.  
  256. procedure TForm1.NMSMTP1HeaderIncomplete(var handled: Boolean;
  257.   hiType: Integer);
  258. begin
  259.   ShowMessage('Header Incomplete.');
  260. end;
  261.  
  262.  
  263.  
  264.  
  265.  
  266. procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  267. begin
  268.  NMSMTP1.Abort;
  269. end;
  270.  
  271. end.
  272.