我当然知道用smtp控件,就是delphi自带的NMsmtp控件,可是如果是拨号上网就应该没问题发送出去……通过代理服务器?????谢谢两位

解决方案 »

  1.   

    如果代理服务器支持SOCKS5或SOCKS4协议可以使用这些协议
     如果代理服务器支持邮件转发,参考代理服务器的说明
     如果代理服务器支持NAT,你不需要修改任何内容(包括Windows2000共享上网,WinProxy等软件)
      

  2.   

    我有个例子:
    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.
      

  3.   

    need rept ???我用的是21cn的免费邮,提示上面的错误信息?????
      

  4.   

    need  RCPT  ???  
     
    我用的是21cn的免费邮,提示上面的错误信息?????
      

  5.   

    据说各个mail服务商所用的协议不尽相同,所以,你不要指望随便找一个控件就可以全世界发mail了,还是自己看看rfc的文档吧!
      

  6.   

    发送邮件除了smtp协议还有什么协议是可以发送邮件的啊!请高手指点一二,呵呵!