hai,大家好,我是梦寻,说来这应算是我的第二次发帖了,这回小梦给大家带来的是一个发信机,不知大家喜不喜欢。如果不满意的话,不要紧,您就狠狠的训梦寻一顿。Ok,如果您认为还可以的话请别忘了投梦寻一票哦,小梦先在这说声谢谢了。^_^

    ok,还是那句老话,转入正题,现在我们就来做一个发信机。

首先我们应在工程中加入以下元件。

名 caption           关联的组件
Label1 邮件服务器地址:    Edit1
Label2 帐号名:           Edit2
Label3 端口号:           Edit3
Label4 收信群体服务器地址:Edit4
Label5 收信者名称:       ComboBox1
Label6 信件主题信息:     Edit5
Label7 所要发送信件:     Edit6
Label8 信件附件路径:     ListBox1
Label9 发信显示的信息名:  Edit8
Label10 发信人 Email 地址:Edit9
CheckBox1 穷举式发信 
Button1 开始发信 
Button2 读入字典文件 
Button3 ...               Edit6
Button4 增加/             ListBox
Button5 清除              ListBox
Panel1  
Panel2  
StatusBar1  
OpenDialog1  
NMSMTP1  
ListBox1  

好的,当我们加完了以上所有的组件后,并编好位置后,接下来我们就可以把以下代码以覆盖的形式拷入Delphi 的代码编辑栏中。

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Psock, NMsmtp, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    NMSMTP1: TNMSMTP;
    Panel1: TPanel;
    Label9: TLabel;
    Edit8: TEdit;
    Edit9: TEdit;
    Label10: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Edit6: TEdit;
    Edit5: TEdit;
    Button3: TButton;
    Button4: TButton;
    Panel2: TPanel;
    Label1: TLabel;
    Label4: TLabel;
    Edit4: TEdit;
    ComboBox1: TComboBox;
    Button1: TButton;
    Button2: TButton;
    CheckBox1: TCheckBox;
    Label5: TLabel;
    Edit2: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Edit3: TEdit;
    StatusBar1: TStatusBar;
    OpenDialog1: TOpenDialog;
    ListBox1: TListBox;
    Edit1: TEdit;
    Button5: TButton;
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure NMSMTP1Success(Sender: TObject);
    procedure NMSMTP1Failure(Sender: TObject);
    procedure SendNextmail(var datteinc:integer);
    procedure Button1Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure NMSMTP1ConnectionFailed(Sender: TObject);
    procedure NMSMTP1ConnectionRequired(var Handled: Boolean);
    procedure NMSMTP1InvalidHost(var Handled: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Edit8KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit9KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit6KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit5KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit4KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ComboBox1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure helpshow;
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  sendsuc,sendfal,cursennum,totaco:integer;
  connal,startsen:boolean;
implementation

{$R *.DFM}
procedure TForm1.helpshow;
begin
showmessage(
#13+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓+#13+
┃  在使用本发信机发信时,应先作完以下几项:                     ┃+#13+
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫+#13+
┃    1 在收信地址栏中输入收信群体的地址                        ┃+#13+
┃      例:收信体为 则应在其中填入:yyy.nnn          ┃+#13+
┃                                                              ┃+#13+
┃    2 由于本发信机仅是个范例故而不具备有穷举发信功能,因此您应┃+#13+
┃      在收信栏中手动输入收信者名或读入一字典文件,格式举例如下┃+#13+
┃      例,发给 xx1、xx2   则每输完一个,按回车键一次)          ┃+#13+
┃  &n