我要一个 SMTP 发送邮件的例子 
查过以前的贴子 大多都不能用
望谁能给我一个 已经验证过的例子 
希望大家支持 但不要去给我转贴那些没有验证过的东西

解决方案 »

  1.   

    我这里有,留下你的mail有空我给你发过去!
    不过这段时间我不能上网,你得等!
      

  2.   

    [email protected]谁有 给我个例子
      

  3.   

    实现(以POP3为例) ---- 自定义TPOP类的描述:  SessionState = ( Init,Authorization, Transaction,Update);
     TPop=class (TComponent)
      public
         UserName:string;//Email帐户名
         PassWord:string; //Email口令
         ReceText:Pchar;  //server端收到的字符串
         PopState:SessionState;  
    //pop状态:
    init or authorization or transaction  or update
         MsgCount:integer; //邮件总数
         SizeCount:integer;  //邮件总大小
         ReplyString:string;//服务器端发送的应答信息
         DeleIndex:byte;//用户要删的邮件序号
         ListIndex:byte;//list方法 的参数:
    用户要列出的序号为listindex的邮件信息
         RetrIndex:byte;//retr方法的参数:
    用户要取序号为retrindex的邮件
         TopIndex:byte; //top方法的参数
         QuitFlag:boolean;//用户如果通过quit命断连则此变量为true;
    反之(此时要把f_dele都置回0)
         OldMsgCount:integer;//旧邮件数:Last 命令返回
         //邮件头的各个域 
         HMsgId:string;
         HReplyTo:string;
         HDate:string;
         HFrom:string;
         HTo:string;
         HSubject:string;
         HMIME_Ver:real;
         HContent_Type:string;
         HContent_Transfer_Encoding:string;
         HText:string;
        //所有POP3服务器必须支持的命令
        procedure user;
        function pass:boolean;
        procedure stat;
        procedure dele;
        procedure list;
        procedure retr;
        procedure noop;
        procedure rset;
        procedure aquit;
        procedure tquit;
        //扩展的可选择实现的POP3 命令
       procedure top;
       procedure last;
       procedure apop;
       procedure uidl;
       end;
    ---- 1. 建立连接 ---- 我们可以看到利用了Tclientsocket后客户端请求建立连接只需下面的代码。 with ClientSocket do
          begin
            Host := Server;
            Active := True;
          end;
    ---- 服务器端利用TserverSocket,一直在侦听110端口,若客户端有连接请求,则ServerSocketAccept事件会被激活,建立起连接。 procedure TMyForm.ServerSocketAccept(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
       Statusbar1.Panels[0].Text :=
       '连接到 ' + Socket.RemoteAddress;
      //pop对象初始化
      pop:=TPop.Create(nil);
      pop.PopState:=init;
      pop.LoginResult:=false;
      pop.QuitFlag:=false;
      ServerSocket.Socket.Connections[0]
      .sendtext('+OK ibonc pop3 server is ready'+crlf);end;
    ---- 2. 通信 ---- 服务器端收到客户端发来的信息,则会激活ServerSocketClientRead事件,通过ServerSocket的Socket.ReceiveText可以得到信息的内容。 procedure TMyForm.ServerSocketClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    var temp_command :string; 
    //存放接收到的命令行,并做去crlf的处理
    begin
     temp_command:=Socket.ReceiveText;
     //to remove the crlf in command line
     temp_command:=trim(copy(temp_command,1,
    pos(crlf,temp_command)-1));   
     pop.ReceText:=pchar(temp_command);
     if  pop.popstate=init then
        if  strLIComp(pop.ReceText,'user ',5)=0 then
           pop.user
        else
           ServerSocket.Socket.Connections[0]
    .sendtext('-ERR user name please')
     else if pop.popstate=authorization then
        begin
             if strLIComp(pop.ReceText,'pass ',5)=0 then
                   pop.pass 
             else if strIComp(pop.ReceText,'quit')=0  then
                   pop.aquit
                 else
                   ServerSocket.Socket.Connections[0]
    .sendtext('-ERR pass word please');
        end
     else if pop.popstate=transaction then
         begin
              if  strIComp(pop.ReceText,'stat')=0  then
                  pop.stat   
              else if strLIComp(pop.ReceText,'dele ',5)=0 then
                  pop.dele
              else if strLIComp(pop.ReceText,'list',4)=0 then
                  pop.list
              else if strLIComp(pop.ReceText,'retr ',5)=0 then
                  pop.retr
              else if strIComp(pop.ReceText,'noop')=0 then
                  pop.noop
              else if strIComp(pop.ReceText,'rset')=0 then
                  pop.rset
              else if strIComp(pop.ReceText,'quit')=0 then
                  pop.tquit
              else if strIComp(pop.ReceText,'last')=0 then
                  pop.last
              else if strLIComp(pop.ReceText, 'apop ',5)=0 then
                  pop.apop
              else if strLIComp(pop.ReceText, 'uidl ',5)=0 then
                  pop.uidl
              else
                  ServerSocket.socket.connections[0]
    .sendtext('-ERR no such command yet'+crlf);
              end
    end;
    ---- 3. 关闭连接    procedure TMyForm.ServerSocket
    ClientDisconnect(Sender: TObject;
            Socket: TCustomWinSocket);
       begin
         ServerSocket.Active := False;
         //如果client端没有通过quit 命令断连,
         则在断连时要把那些f_dele置为0
         if pop.QuitFlag=False then
           begin
             MyForm.query11.Close;
             MyForm.query11.Params[0].Asstring:=pop.UserName;
             MyForm.query11.prepare;
             MyForm.query11.execsql;
           end;
       end;
      

  4.   

    indy中不是有例子吗?去它的网站可以下载到最新的例子啊!indy中的smtp支持认证。
    http://www.nevrona.com/Indy/index.html
      

  5.   

    我要SMTP  有人却给了POP3