放一个TLabel控件,设置它的鼠标形状,然后在它的Clik事件加入以下代码:
 ShellExecute(Handle, 'open', 'http://go6.163.com/dica', nil, nil, SW_SHOWNORMAL);
或:
   ShellExecute(Handle, 'open', 'mailto:[email protected]', nil, nil, SW_SHOWNORMAL);

解决方案 »

  1.   

    leeky(雅痞·千年虫) :
    我是要自已完成发信的功能,不是调出OUTLOOK再发。
      

  2.   

    你要用什么方式发,smtp 或 pop3//这是我写的一个演示程序, 
    //窗体上有一个BUTTON控件,一个LABEL控件,一个NMSMTP控件 
    //带密码险证的邮件发送程序需要BASE64编码,DecodeBase64和 EncodeBase64 
    //为解码和编码函数 
    //在263、163和SOHU上都能发送成功 
    unit Unit1; 
     
    interface 
     
    uses 
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
      StdCtrls, Psock, NMsmtp, ComCtrls; 
     
    type 
      TForm1 = class(TForm) 
        NMSMTP1: TNMSMTP; 
        Button1: TButton; 
        Label1: TLabel; 
        procedure Button1Click(Sender: TObject); 
        procedure NMSMTP1Connect(Sender: TObject); 
        procedure NMSMTP1InvalidHost(var Handled: Boolean); 
        procedure NMSMTP1ConnectionFailed(Sender: TObject); 
        procedure NMSMTP1Status(Sender: TComponent; Status: String); 
        procedure NMSMTP1SendStart(Sender: TObject); 
        procedure NMSMTP1Success(Sender: TObject); 
      private 
        { Private declarations } 
      public 
        { Public declarations } 
      end; 
    //BaseTable为BASE64码表 
    const BaseTable:string='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; 
     
    var 
      Form1: TForm1; 
      AuthSucc:boolean;// 是否需要密码验证 
      function DecodeBase64(Source:string):string; //解码函数 
      function FindInTable(CSource:char):integer;  // 
      function EncodeBase64(Source:string):string; //编码函数 
    implementation 
     
    {$R *.DFM} 
    // 
    function FindInTable(CSource:char):integer; 
    begin 
      result:=Pos(string(CSource),BaseTable)-1; 
    end; 
    //// 
    function DecodeBase64(Source:string):string; 
    var 
      SrcLen,Times,i:integer; 
      x1,x2,x3,x4,xt:byte; 
    begin 
      result:=''; 
      SrcLen:=Length(Source); 
      Times:=SrcLen div 4; 
      for i:=0 to Times-1 do 
      begin 
        x1:=FindInTable(Source[1+i*4]); 
        x2:=FindInTable(Source[2+i*4]); 
        x3:=FindInTable(Source[3+i*4]); 
        x4:=FindInTable(Source[4+i*4]); 
        x1:=x1 shl 2; 
        xt:=x2 shr 4; 
        x1:=x1 or xt; 
        x2:=x2 shl 4; 
        result:=result+chr(x1); 
        if x3= 64 then break; 
        xt:=x3 shr 2; 
        x2:=x2 or xt; 
        x3:=x3 shl 6; 
        result:=result+chr(x2); 
        if x4=64 then break; 
        x3:=x3 or x4; 
        result:=result+chr(x3); 
      end; 
    end; 
    ///// 
    function EncodeBase64(Source:string):string; 
    var 
      Times,LenSrc,i:integer; 
      x1,x2,x3,x4:char; 
      xt:byte; 
    begin 
      result:=''; 
      LenSrc:=length(Source); 
      if LenSrc mod 3 =0 then Times:=LenSrc div 3 
      else Times:=LenSrc div 3 + 1; 
      for i:=0 to times-1 do 
      begin 
        if LenSrc >= (3+i*3) then 
        begin 
          x1:=BaseTable[(ord(Source[1+i*3]) shr 2)+1]; 
          xt:=(ord(Source[1+i*3]) shl 4) and 48; 
          xt:=xt or (ord(Source[2+i*3]) shr 4); 
          x2:=BaseTable[xt+1]; 
          xt:=(Ord(Source[2+i*3]) shl 2) and 60; 
          xt:=xt or (ord(Source[3+i*3]) shr 6); 
          x3:=BaseTable[xt+1]; 
          xt:=(ord(Source[3+i*3]) and 63); 
          x4:=BaseTable[xt+1]; 
        end 
        else if LenSrc>=(2+i*3) then 
        begin 
          x1:=BaseTable[(ord(Source[1+i*3]) shr 2)+1]; 
          xt:=(ord(Source[1+i*3]) shl 4) and 48; 
          xt:=xt or (ord(Source[2+i*3]) shr 4); 
          x2:=BaseTable[xt+1]; 
          xt:=(ord(Source[2+i*3]) shl 2) and 60; 
          x3:=BaseTable[xt+1]; 
          x4:='='; 
        end else 
        begin 
          x1:=BaseTable[(ord(Source[1+i*3]) shr 2)+1]; 
          xt:=(ord(Source[1+i*3]) shl 4) and 48; 
          x2:=BaseTable[xt+1]; 
          x3:='='; 
          x4:='='; 
        end; 
        result:=result+x1+x2+x3+x4; 
      end; 
    end; 
    ////////// 
    procedure TForm1.Button1Click(Sender: TObject); 
    var MailTo,MailBody:TStringList; 
    begin 
    Nmsmtp1.Host :='smtp.sohu.com'; 
    nmsmtp1.Port :=25; 
    nmsmtp1.UserID :='linbch';//发信人的用户名,必须是真实的 
    nmsmtp1.ReportLevel :=1; 
    Nmsmtp1.TimeOut :=10000; 
    nmsmtp1.Connect ;    ///连接 
    if AuthSucc=true then ////验证成功 
    begin 
      MailTo:=TStringList.Create; 
      MailTo.Add('[email protected]'); 
      MailBody.Add('Hello it is a test'); 
      nmsmtp1.PostMessage.FromAddress:='[email protected]'; //发信人的电子邮件地址 
      nmsmtp1.PostMessage.ToAddress :=MailTo; 
      nmsmtp1.PostMessage.Body:=MailBody; 
      nmsmtp1.PostMessage.Subject :='My test'; 
      Mailto.Clear ; 
      //Mailto.Add('c:\a.txt'); 
      //Mailto.Add('c:\b.txt'); 
      //nmsmtp1.PostMessage.Attachments:=MailTo; 附件 
      MailTo.Free ; 
      MailBody.Free; 
      nmsmtp1.SendMail; 
    end; 
    end; 
    procedure TForm1.NMSMTP1Connect(Sender: TObject); 
    begin 
    //////连接成功,下面用户认证过程 
      label1.caption:=nmsmtp1.Status; 
      if nmsmtp1.ReplyNumber = 250 then 
        label1.caption:=nmsmtp1.Transaction('auth login'); //开始认证 
      if nmsmtp1.ReplyNumber =334 then //返回值为334,让你输入用BASE64编码后的用户名 
        label1.caption:=nmsmtp1.Transaction('YWFhYWE=');// 用户名aaaaa 
      if nmsmtp1.ReplyNumber =334 then  // 返回值为334,让你输入用BASE64编码后的用户密码 
        label1.caption:=nmsmtp1.Transaction('MTIzNDU2'); //密码为123456 
      if nmsmtp1.ReplyNumber =235 then 
      begin 
        label1.caption:='successful'; 
        AuthSucc:=true; 
      end; 
      //showmessage(label1.caption); 
    end; 
     
    procedure TForm1.NMSMTP1InvalidHost(var Handled: Boolean); 
    begin 
      label1.caption :='Invalid Host'; 
    end; 
     
    procedure TForm1.NMSMTP1ConnectionFailed(Sender: TObject); 
    begin 
    label1.caption :='connect failed'; 
    end; 
     
    procedure TForm1.NMSMTP1Status(Sender: TComponent; Status: String); 
    begin 
      label1.caption :=nmsmtp1.Status ; 
    end; 
     
    procedure TForm1.NMSMTP1SendStart(Sender: TObject); 
    begin 
      label1.Caption :='start send'; 
    end; 
     
    procedure TForm1.NMSMTP1Success(Sender: TObject); 
    begin 
      label1.Caption:='send success!'; 
    end;