unit SendEmailUnit;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, Psock, NMsmtp,inifiles, ComCtrls;type
  TSendEmailForm = class(TForm)
    Label1: TLabel;
    receive: TEdit;
    Label2: TLabel;
    subject: TEdit;
    EmailBody: TMemo;
    Label3: TLabel;
    accessary: TEdit;
    BitBtn2: TBitBtn;
    OpenDialog1: TOpenDialog;
    SpeedButtonSend: TSpeedButton;
    NMSMTP1: TNMSMTP;
    StatusBar1: TStatusBar;
    procedure BitBtn2Click(Sender: TObject);
    procedure SpeedButtonSendClick(Sender: TObject);
    procedure NMSMTP1Connect(Sender: TObject);
    procedure NMSMTP1Success(Sender: TObject);
    procedure NMSMTP1SendStart(Sender: TObject);
    procedure NMSMTP1ConnectionFailed(Sender: TObject);
    procedure NMSMTP1ConnectionRequired(var Handled: Boolean);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  SendEmailForm: TSendEmailForm;
  IniFile:TiniFile;
  path:string;
implementation{$R *.DFM}procedure TSendEmailForm.BitBtn2Click(Sender: TObject);
begin
   if OpenDialog1.Execute then
    accessary.Text :=Opendialog1.FileName;
end;procedure TSendEmailForm.SpeedButtonSendClick(Sender: TObject);
var
   SendMan,path,EmailAccount,EmailServer,EmailPort:string;
begin
   path        :=ExTractFilePath(Application.ExeName) ;
   IniFile     :=TIniFile.Create(path+'SystemSet.ini');
   SendMan     :=INiFile.ReadString('Email','默认发送者','');
   EmailAccount:=IniFile.ReadString('Email','邮箱帐号','');
   EmailServer :=IniFile.ReadString('Email','邮件服务器','');
   EmailPort   :=IniFile.ReadString('Email','服务器端口号','');
   try
    with NMSmtp1 do begin
     Host  :=EmailServer;
     Port  :=strToInt(EmailPort);
     UserID:=EmailAccount;
     Connect;
     if  Connected then  begin
        PostMessage.FromName   :=EmailAccount;
        PostMessage.FromAddress:=SendMan;
        postMessage.Subject:=subject.Text;
        PostMessage.ToAddress.Add(receive.text);
        PostMessage.Attachments.text:=Accessary.Text;
        PostMessage.Body.Assign(EmailBody.lines);
        SendMail;
        end ;
    end;
   finally
     Inifile.Free;
   end;
end;procedure TSendEmailForm.NMSMTP1Connect(sender: TObject);
begin
    statusbar1.Panels[0].Text:='正在连接到服务器...';
    subject.Color   :=clInactiveBorder;
    Accessary.Color :=clInactiveBorder;
    EmailBody.Color :=clInactiveBorder;
end;procedure TSendEmailForm.NMSMTP1Success(Sender: TObject);
begin
   statusbar1.Panels[0].Text:='恭喜您,邮件已经成功发送!';
   showmessage('邮件已经成功发送!');
   subject.Color   :=clWindow;
   Accessary.Color :=clWindow;
   EmailBody.Color :=clWindow;
   subject.Clear;
   Accessary.Clear;
   EmailBody.Clear;
   StatusBar1.Panels.Clear;
   SendEmailForm.Close;
end;procedure TSendEmailForm.NMSMTP1SendStart(Sender: TObject);
begin
    statusbar1.Panels[0].Text:='正在发送...';
end;procedure TSendEmailForm.NMSMTP1ConnectionFailed(Sender: TObject);
begin
     ShowMessage('对不起,连接服务器失败!');
end;procedure TSendEmailForm.NMSMTP1ConnectionRequired(var Handled: Boolean);
begin
   If MessageDlg('Connection Required. Connect?', mtConfirmation, mbOkCancel, 0) = mrOk then
     Begin
      Handled := TRUE;
      NMSMTP1.Connect;
     End;
end;procedure TSendEmailForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  if NMSmtp1.Connected then begin
     NMSmtp1.Disconnect;
     NMSmtp1.Abort;
  end;
end;end.