SMTPDEM.~PAS
上传用户:wgxtgt
上传日期:2013-04-09
资源大小:14k
文件大小:6k
源码类别:

Email服务器

开发平台:

Delphi

  1. unit smtpdem;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   ComCtrls, StdCtrls, Psock, NMsmtp, ExtCtrls;
  6. type
  7.   TForm1 = class(TForm)
  8.     PageControl1: TPageControl;
  9.     TabSheet1: TTabSheet;
  10.     TabSheet2: TTabSheet;
  11.     TabSheet3: TTabSheet;
  12.     Edit1: TEdit;
  13.     NMSMTP1: TNMSMTP;
  14.     Label1: TLabel;
  15.     Edit2: TEdit;
  16.     Label2: TLabel;
  17.     Button1: TButton;
  18.     Button2: TButton;
  19.     TabSheet4: TTabSheet;
  20.     StatusBar1: TStatusBar;
  21.     Edit10: TEdit;
  22.     Label11: TLabel;
  23.     Button6: TButton;
  24.     Edit3: TEdit;
  25.     Label3: TLabel;
  26.     Memo1: TMemo;
  27.     Panel1: TPanel;
  28.     GroupBox1: TGroupBox;
  29.     Edit4: TEdit;
  30.     Edit5: TEdit;
  31.     Label4: TLabel;
  32.     Label5: TLabel;
  33.     Edit6: TEdit;
  34.     Label6: TLabel;
  35.     Edit7: TEdit;
  36.     Label7: TLabel;
  37.     Edit8: TEdit;
  38.     Label8: TLabel;
  39.     ListBox1: TListBox;
  40.     Label9: TLabel;
  41.     Button3: TButton;
  42.     Button4: TButton;
  43.     Memo2: TMemo;
  44.     Panel2: TPanel;
  45.     Button5: TButton;
  46.     Label10: TLabel;
  47.     Panel3: TPanel;
  48.     Label13: TLabel;
  49.     Button7: TButton;
  50.     Label12: TLabel;
  51.     OpenDialog1: TOpenDialog;
  52.     Edit9: TEdit;
  53.     Edit11: TEdit;
  54.     procedure Button1Click(Sender: TObject);
  55.     procedure Button6Click(Sender: TObject);
  56.     procedure Button2Click(Sender: TObject);
  57.     procedure NMSMTP1Connect(Sender: TObject);
  58.     procedure NMSMTP1Disconnect(Sender: TObject);
  59.     procedure NMSMTP1Status(Sender: TComponent; Status: String);
  60.     procedure Button3Click(Sender: TObject);
  61.     procedure Button4Click(Sender: TObject);
  62.     procedure Button5Click(Sender: TObject);
  63.     procedure NMSMTP1EncodeStart(Filename: String);
  64.     procedure NMSMTP1EncodeEnd(Filename: String);
  65.     procedure Button7Click(Sender: TObject);
  66.     procedure NMSMTP1MailListReturn(MailAddress: String);
  67.     procedure NMSMTP1ConnectionFailed(Sender: TObject);
  68.     procedure NMSMTP1ConnectionRequired(var handled: Boolean);
  69.     procedure NMSMTP1Failure(Sender: TObject);
  70.     procedure NMSMTP1HostResolved(Sender: TComponent);
  71.     procedure NMSMTP1InvalidHost(var handled: Boolean);
  72.     procedure NMSMTP1PacketSent(Sender: TObject);
  73.     procedure NMSMTP1RecipientNotFound(Recipient: String);
  74.     procedure NMSMTP1SendStart(Sender: TObject);
  75.     procedure NMSMTP1Success(Sender: TObject);
  76.     procedure NMSMTP1HeaderIncomplete(var handled: Boolean;
  77.       hiType: Integer);
  78.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  79.   private
  80.     { Private declarations }
  81.   public
  82.     { Public declarations }
  83.   end;
  84. var
  85.   Form1: TForm1;
  86. implementation
  87. {$R *.DFM}
  88. procedure TForm1.Button1Click(Sender: TObject);
  89. begin
  90.   NMSMTP1.Host := Edit1.Text;
  91.   NMSMTP1.Port := StrToInt(Edit2.Text);
  92.   NMSMTP1.UserID := Edit4.Text;
  93.   NMSMTP1.Connect;
  94. end;
  95. procedure TForm1.Button6Click(Sender: TObject);
  96. var
  97.   TmpStr: String;
  98. begin
  99.   TmpStr := Edit3.Text; // 为了不让用户修改编辑框的内容
  100.   If NMSMTP1.Verify(TmpStr) then
  101.     ShowMessage(TmpStr+'已经验证。')
  102.   else
  103.     ShowMessage(TmpStr+'没有被验证。');
  104. end;
  105. procedure TForm1.Button2Click(Sender: TObject);
  106. begin
  107.   NMSMTP1.Disconnect;
  108. end;
  109. procedure TForm1.NMSMTP1Connect(Sender: TObject);
  110. begin
  111.   StatusBar1.SimpleText := '已经连接。';
  112. end;
  113. procedure TForm1.NMSMTP1Disconnect(Sender: TObject);
  114. begin
  115.   If StatusBar1 <> nil then
  116.     StatusBar1.SimpleText := '断开连接。';
  117. end;
  118. procedure TForm1.NMSMTP1Status(Sender: TComponent; Status: String);
  119. begin
  120.   If StatusBar1 <> nil then
  121.     StatusBar1.SimpleText := status;
  122. end;
  123. procedure TForm1.Button3Click(Sender: TObject);
  124. begin
  125.   If OpenDialog1.Execute then
  126.     ListBox1.Items.Add(OpenDialog1.FileName);
  127. end;
  128. procedure TForm1.Button4Click(Sender: TObject);
  129. begin
  130.   ListBox1.Items.Delete(ListBox1.ItemIndex);
  131. end;
  132. procedure TForm1.Button5Click(Sender: TObject);
  133. begin
  134.   NMSMTP1.PostMessage.FromAddress := Edit6.Text;
  135.   NMSMTP1.PostMessage.FromName := Edit5.Text;
  136.   NMSMTP1.PostMessage.Subject := Edit10.Text;
  137.   NMSMTP1.PostMessage.ToAddress.Add(Edit7.Text);
  138.   NMSMTP1.PostMessage.ToBlindCarbonCopy.Add(Edit9.Text);
  139.   NMSMTP1.PostMessage.ToCarbonCopy.Add(Edit8.Text);
  140.   NMSMTP1.PostMessage.Attachments.AddStrings(Listbox1.Items);
  141.   NMSMTP1.PostMessage.Body.Assign(Memo1.Lines);
  142.   NMSMTP1.SendMail;
  143. end;
  144. procedure TForm1.NMSMTP1EncodeStart(Filename: String);
  145. begin
  146.   StatusBar1.SimpleText := '编码'+Filename;
  147. end;
  148. procedure TForm1.NMSMTP1EncodeEnd(Filename: String);
  149. begin
  150.   StatusBar1.SimpleText := '结束编码'+Filename;
  151. end;
  152. procedure TForm1.Button7Click(Sender: TObject);
  153. begin
  154.   NMSMTP1.ExpandList(Edit11.Text);
  155. end;
  156. procedure TForm1.NMSMTP1MailListReturn(MailAddress: String);
  157. begin
  158.   Memo2.Lines.Add(MailAddress);
  159. end;
  160. procedure TForm1.NMSMTP1ConnectionFailed(Sender: TObject);
  161. begin
  162.   ShowMessage('连接失败。');
  163. end;
  164. procedure TForm1.NMSMTP1ConnectionRequired(var handled: Boolean);
  165. begin
  166.   If MessageDlg('需要连接,进行连接吗?', mtConfirmation, mbOkCancel, 0) = mrOk then
  167.   Begin
  168.     Handled := TRUE;
  169.     NMSMTP1.Connect;
  170.   End;
  171. end;
  172. procedure TForm1.NMSMTP1Failure(Sender: TObject);
  173. begin
  174.   StatusBar1.SimpleText := '失败。';
  175. end;
  176. procedure TForm1.NMSMTP1HostResolved(Sender: TComponent);
  177. begin
  178.   StatusBar1.SimpleText := '解析主机。';
  179. end;
  180. procedure TForm1.NMSMTP1InvalidHost(var handled: Boolean);
  181. var
  182.   TmpStr: String;
  183. begin
  184.   If InputQuery('无效主机!', '指定一台新的主机:', TmpStr) then
  185.   Begin
  186.     NMSMTP1.Host := TmpStr;
  187.     Handled := TRUE;
  188.   End;
  189. end;
  190. procedure TForm1.NMSMTP1PacketSent(Sender: TObject);
  191. begin
  192.   StatusBar1.SimpleText := IntToStr(NMSMTP1.BytesTotal)+'中的'+IntToStr(NMSMTP1.BytesSent)+'字节数被发送。';
  193. end;
  194. procedure TForm1.NMSMTP1RecipientNotFound(Recipient: String);
  195. begin
  196.   ShowMessage('没有发现容器"'+Recipient+'"');
  197. end;
  198. procedure TForm1.NMSMTP1SendStart(Sender: TObject);
  199. begin
  200.   StatusBar1.simpleText := '正在发送消息';
  201. end;
  202. procedure TForm1.NMSMTP1Success(Sender: TObject);
  203. begin
  204.   StatusBar1.SimpleText := '成功';
  205. end;
  206. procedure TForm1.NMSMTP1HeaderIncomplete(var handled: Boolean;
  207.   hiType: Integer);
  208. begin
  209.   ShowMessage('信息头没有完成.');
  210. end;                               
  211. procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  212. begin
  213.  NMSMTP1.Abort;
  214. end;
  215. end.