unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Psock, NMsmtp, ComCtrls;
const
    WM_LOGIN =WM_USER+100;
Type
    TWM = record
                Msg: WORD;
                wParam:Word;
                lParam:DWORD;
           end;
type
  TForm1 = class(TForm)
    Label1: TLabel;
    NMSMTP1: TNMSMTP;
    GroupBox1: TGroupBox;
    Label4: TLabel;
    Edit3: TEdit;
    Label5: TLabel;
    Edit4: TEdit;
    GroupBox2: TGroupBox;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit5: TEdit;
    Label6: TLabel;
    Edit6: TEdit;
    ListBox1: TListBox;
    btnAttach: TButton;
    Memo1: TMemo;
    btnSend: TButton;
    StatusBar1: TStatusBar;
    OpenDialog1: TOpenDialog;
    procedure FormCreate(Sender: TObject);
    procedure NMSMTP1Connect(Sender: TObject);
    procedure btnSendClick(Sender: TObject);
    procedure NMSMTP1ConnectionFailed(Sender: TObject);
    procedure NMSMTP1Disconnect(Sender: TObject);
    procedure NMSMTP1HostResolved(Sender: TComponent);
    procedure NMSMTP1InvalidHost(var Handled: Boolean);
    procedure NMSMTP1SendStart(Sender: TObject);
    procedure NMSMTP1Success(Sender: TObject);
    procedure btnAttachClick(Sender: TObject);
    procedure ListBox1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
    procedure WMLOGIN(var Msg:TWM);Message WM_LOGIN;
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
begin
    //server info
    Edit1.Text:='10.13.101.10';
    Edit2.Text:='25';
    //User info
    Edit3.Text:='Bowman';
    Edit4.Text:='[email protected]';
    //Empty Other
    Edit5.Text:='';
    Edit6.Text:='';
    Memo1.Text:='';
end;procedure TForm1.WMLOGIN(var Msg: TWM);
begin
  //Send mail
  //write receiver info
  NMSMTP1.PostMessage.FromAddress := Edit4.Text;
  NMSMTP1.PostMessage.FromName := Edit3.Text;
  NMSMTP1.PostMessage.Subject := Edit6.Text;
  NMSMTP1.PostMessage.ToAddress.Add(Edit5.Text);
  NMSMTP1.PostMessage.Attachments.AddStrings(Listbox1.Items);
  NMSMTP1.PostMessage.Body.Assign(Memo1.Lines);
  //send it
  NMSMTP1.SendMail;
  //disconnect finally
  NMSMTP1.Disconnect;
end;procedure TForm1.NMSMTP1Connect(Sender: TObject);
begin
    //update view
     StatusBar1.SimpleText:='Connected';
     StatusBar1.Update;
     //post message
     SendMessage(Handle,WM_LOGIN,0,0);
end;procedure TForm1.btnSendClick(Sender: TObject);
begin
  //valid check
  //server info
  if Edit1.text='' then
    exit;
  if Edit2.Text='' then
    exit;
  //usr info
  if Edit3.Text='' then
    exit;
  //receiver info
  if Edit5.Text='' then
    exit;  //set server info
  NMSMTP1.Host := Edit1.Text;
  NMSMTP1.Port := StrToInt(Edit2.Text);
  NMSMTP1.UserID:=Edit3.Text;
  //update view
  StatusBar1.SimpleText:='Connecting...';
  StatusBar1.Update;
  //connect
  NMSMTP1.Connect;
end;procedure TForm1.NMSMTP1ConnectionFailed(Sender: TObject);
begin
  ShowMessage('Connection Failed');
end;procedure TForm1.NMSMTP1Disconnect(Sender: TObject);
begin
  If StatusBar1 <> nil then
    StatusBar1.SimpleText := 'Disconnected from server';
end;procedure TForm1.NMSMTP1HostResolved(Sender: TComponent);
begin
     StatusBar1.SimpleText := 'HostResolved';
end;procedure TForm1.NMSMTP1InvalidHost(var Handled: Boolean);
begin
     StatusBar1.SimpleText := 'InvalidHost';
end;procedure TForm1.NMSMTP1SendStart(Sender: TObject);
begin
    StatusBar1.SimpleText := 'SendStart';
end;procedure TForm1.NMSMTP1Success(Sender: TObject);
begin
    StatusBar1.SimpleText := 'Success';
end;procedure TForm1.btnAttachClick(Sender: TObject);
begin
    //select attach file
    if OpenDialog1.Execute then
        ListBox1.Items.Add(
            OpenDialog1.FileName);
end;procedure TForm1.ListBox1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
    idex:integer;
begin
    //valid check
    if ListBox1.ItemIndex=-1 then
        exit;
    //key detect
    if Key<> VK_DELETE then
        exit;
    idex:=listbox1.ItemIndex;
    listbox1.Items.Delete(idex);
end;end.

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Psock, NMsmtp, ComCtrls;
    const
        WM_LOGIN =WM_USER+100;
    Type
        TWM = record
                    Msg: WORD;
                    wParam:Word;
                    lParam:DWORD;
               end;
    type
      TForm1 = class(TForm)
        Label1: TLabel;
        NMSMTP1: TNMSMTP;
        GroupBox1: TGroupBox;
        Label4: TLabel;
        Edit3: TEdit;
        Label5: TLabel;
        Edit4: TEdit;
        GroupBox2: TGroupBox;
        Label2: TLabel;
        Label3: TLabel;
        Edit1: TEdit;
        Edit2: TEdit;
        Edit5: TEdit;
        Label6: TLabel;
        Edit6: TEdit;
        ListBox1: TListBox;
        btnAttach: TButton;
        Label7: TLabel;
        Memo1: TMemo;
        btnSend: TButton;
        StatusBar1: TStatusBar;
        OpenDialog1: TOpenDialog;
        procedure FormCreate(Sender: TObject);
        procedure NMSMTP1Connect(Sender: TObject);
        procedure btnSendClick(Sender: TObject);
        procedure NMSMTP1ConnectionFailed(Sender: TObject);
        procedure NMSMTP1Disconnect(Sender: TObject);
        procedure NMSMTP1HostResolved(Sender: TComponent);
        procedure NMSMTP1InvalidHost(var Handled: Boolean);
        procedure NMSMTP1SendStart(Sender: TObject);
        procedure NMSMTP1Success(Sender: TObject);
        procedure btnAttachClick(Sender: TObject);
        procedure ListBox1KeyUp(Sender: TObject; var Key: Word;
          Shift: TShiftState);
      private
        { Private declarations }
        procedure WMLOGIN(var Msg:TWM);Message WM_LOGIN;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
    begin
        //server info
        Edit1.Text:='10.13.101.10';
        Edit2.Text:='25';
        //User info
        Edit3.Text:='Bowman';
        Edit4.Text:='[email protected]';
        //Empty Other
        Edit5.Text:='';
        Edit6.Text:='';
        Memo1.Text:='';
    end;procedure TForm1.WMLOGIN(var Msg: TWM);
    begin
      //Send mail
      //set html
      NMSMTP1.SubType:=mthtml;
      //write receiver info
      NMSMTP1.PostMessage.FromAddress := Edit4.Text;
      NMSMTP1.PostMessage.FromName := Edit3.Text;
      NMSMTP1.PostMessage.Subject := Edit6.Text;
      NMSMTP1.PostMessage.ToAddress.Add(Edit5.Text);
      NMSMTP1.PostMessage.Attachments.AddStrings(Listbox1.Items);
      NMSMTP1.PostMessage.Body.Assign(Memo1.Lines);
      //send it
      NMSMTP1.SendMail;
      //disconnect finally
      NMSMTP1.Disconnect;
    end;procedure TForm1.NMSMTP1Connect(Sender: TObject);
    begin
        //update view
         StatusBar1.SimpleText:='Connected';
         StatusBar1.Update;
         //post message
         SendMessage(Handle,WM_LOGIN,0,0);
    end;procedure TForm1.btnSendClick(Sender: TObject);
    begin
      //valid check
      //server info
      if Edit1.text='' then
        exit;
      if Edit2.Text='' then
        exit;
      //usr info
      if Edit3.Text='' then
        exit;
      //receiver info
      if Edit5.Text='' then
        exit;  //set server info
      NMSMTP1.Host := Edit1.Text;
      NMSMTP1.Port := StrToInt(Edit2.Text);
      NMSMTP1.UserID:=Edit3.Text;
      //update view
      StatusBar1.SimpleText:='Connecting...';
      StatusBar1.Update;
      //connect
      NMSMTP1.Connect;
    end;procedure TForm1.NMSMTP1ConnectionFailed(Sender: TObject);
    begin
      ShowMessage('Connection Failed');
    end;procedure TForm1.NMSMTP1Disconnect(Sender: TObject);
    begin
      If StatusBar1 <> nil then
        StatusBar1.SimpleText := 'Disconnected from server';
    end;procedure TForm1.NMSMTP1HostResolved(Sender: TComponent);
    begin
         StatusBar1.SimpleText := 'HostResolved';
    end;procedure TForm1.NMSMTP1InvalidHost(var Handled: Boolean);
    begin
         StatusBar1.SimpleText := 'InvalidHost';
    end;procedure TForm1.NMSMTP1SendStart(Sender: TObject);
    begin
        StatusBar1.SimpleText := 'SendStart';
    end;procedure TForm1.NMSMTP1Success(Sender: TObject);
    begin
        StatusBar1.SimpleText := 'Success';
    end;procedure TForm1.btnAttachClick(Sender: TObject);
    begin
        //select attach file
        if OpenDialog1.Execute then
            ListBox1.Items.Add(
                OpenDialog1.FileName);
    end;procedure TForm1.ListBox1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    var
        idex:integer;
    begin
        //valid check
        if ListBox1.ItemIndex=-1 then
            exit;
        //key detect
        if Key<> VK_DELETE then
            exit;
        idex:=listbox1.ItemIndex;
        listbox1.Items.Delete(idex);
    end;end.
    行不行,我有很多,给分...
      

  2.   

    多谢你的帮助,不过你好像看错了,是SNMP不是SMTP。
    我已经找到了相关控件,可以去这边看看:)
    http://www.ararat.cz/synapse/