你的机子上有没有装好smtp服务?如果有的话,需要配置一下php.ini中的
[mail function]
; For Win32 only.
SMTP = localhost; For Win32 only.
;sendmail_from = [email protected]
如果没有 的话找一个不需要验证的smtp服务器填上再不行就想办法申请一个可以smtp的邮箱,然后下载个socket的邮件类来发邮件

解决方案 »

  1.   

    可以用fsockopen函数取得$sock资源,然后一步一步fputs函数用命令下来
    建议找找相关资料!也可以先找找邮件发送的全过程
      

  2.   

    我的php.ini里的设置是默认的,也就是
    [mail function]
    ; For Win32 only.
    SMTP = localhost; For Win32 only.
    ;sendmail_from = [email protected]
    什么叫做验证的smtp服务器,我资料不要保存,只要页面上的数据通过邮件发送到指定地方就行了,
      

  3.   

    只是想发信的话,去www.citiz.net 申请一个可以smtp的邮箱
    然后用下面贴的类就可以发了<?php
    /**
     * Class:             smtp.class.inc
     * Require:
     * Optional:
     * Beschreibung:      A Class to send an E-Mail via SMTP and/or generate header
     * Erstellt:          21. M鋜z 2003, 18:49:36
     * Letzte 膎derung:   29. M鋜z 2003, 01:38:00
     * Author:            Jointy <[email protected]>
     * Copyright:         @GPL Jointy
     * Version:           1.00 (final)
     *
     * /////////////////////////////////////////////////////////////////////////////
     * /////////////////////////////////////////////////////////////////////////////
     * SMTP Variablen
     *
     * $smtp_server         - Smtp Server Address
     * optional:
     * $smtp_user           - Smtp Login User
     * $smtp_pass           - Smtp User Login Password
     *
     * /////////////////////////////////////////////////////////////////////////////
     *
     *
     * /////////////////////////////////////////////////////////////////////////////
     * Funktion Variablen
     *
     * function make_header($from, $mailto, $subject, $priority="3", $cc="", $bcc="", $gen_message_id="Y")
     *
     * $from                - Sender Address (z.B. [email protected] )
     * $mailto              - To: Address (z.B. String(",") or Array ( 0 => [email protected];
     *                                                                 1 => [email protected]; )
     * $subject             - E-Mail SubjectLine (string)
     *
     * optional:
     * $priority            - E-Mail Priority (default = "3")
     * $cc && $bcc          - CC and BCC Address (howto $mailto)
     * $gen_message_id      - (Y) Message-Id is generatet by function, (N) Message-Id must generate by your self or by SMTP-Server
     *
     *
     *
     * function &smtp_send($from, $mailto, $header, $message="", $cc=null, $bcc=null)
     * $from                - Sender Address (z.B. [email protected] )
     * $mailto              - To: Addressen (z.B. String(",") or Array ( 0 => [email protected];
     *                                                                   1 => [email protected]; )
     * $header              - E-Mail Header generate by "make_header" or you make your own header
     * optional:
     * $message             - Message Text
     * $cc && $bcc          - howto $mailto
     *
     *
     * /////////////////////////////////////////////////////////////////////////////
     * /////////////////////////////////////////////////////////////////////////////
    **/if (!isset($_SMTP_CLASS_INC)){
        $_SMTP_CLASS_INC = 1;
        class SMTP {        // SMTP-Server Vars !!! //
            var $smtp_server;
            var $smtp_user=null;
            var $smtp_pass=null;
            //Header Var !! //
            var $header="";        // Socket Var !! //
            var $smtp_socket;        // Fehler Var !! //
            var $error="E-Mail send.";        function SMTP($smtp_server,$smtp_user="",$smtp_pass=""){
                if(!trim($smtp_server)){
                  $this->smtp_server="";
                }
                $this->smtp_server= trim($smtp_server);
                if($smtp_user!="" && $smtp_pass!=""){
                    $this->smtp_user= trim($smtp_user);
                    $this->smtp_pass= trim($smtp_pass);
                }
            }
            
            function &smtp_put($string){
                return fputs($this->smtp_socket, $string . "\r\n");
            }        /*
              The function make_header()
            
            */
            function &make_header($from, $mailto, $subject, $priority="3", $cc="", $bcc="", $gen_message_id="Y"){            if (!preg_match( '/.+@.+/',$from)){
                    return $this->error="Sender Address is incorrekt";
                }            // Message-ID: The message ID consists of Date+Time.Random.SenderAddress !!!
                if($gen_message_id=="Y"){                $this->header = "Message-Id: <". date('YmdHis').".". md5(microtime()).".". strtoupper($from) ."> \r\n";
                }            //From: Address
                $this->header .="From: <" . $from . "> \r\n";
                // To: Address
                if(!is_array($mailto)){
                    $mailto=explode(",",$mailto);
                }            while(list(,$mailto_address) = each( $mailto )){                if($mailto_address!=""){
                        $mailto_address=trim($mailto_address);
                        if(!preg_match( '/.+@.+/',$mailto_address)){
                            return $this->error = "This To: Address is incorrekt.  Error: ".$mailto_address;
                        }
                    }
                    unset($mailto_address);
                }
                $mailto=implode(",",$mailto);
                $this->header .="To: <".$mailto."> \r\n";            // Subject:
                $this->header .="Subject: ".$subject." \r\n";
                //Date: Standard Mail Format (z.B Sat, 22 Mar 2003 22:57:05 +0100 ) !!
                $this->header .="Date: ". date('D, d M Y H:i:s O') ." \r\n";
      

  4.   

    // Check isset CC and/or BCC and check is it in right RFC format
                if($cc!=""){
                    if(!is_array($cc)){
                        $cc=explode(",",$cc);
                    }                while(list(,$cc_address) = each ( $cc )){
                        if($cc_address!=""){
                            $cc_address = trim($cc_address);
                            if(!preg_match( '/.+@.+/',$cc_address)){
                                return $this->error="This CC Address is in correkt. Error: ".$cc_address;
                            }
                        }
                    unset($cc_address);
                    }                $cc=implode(",",$cc);
                    $this->header .= "CC: ".$cc." \r\n";
                }            if($bcc!=""){
                    if(!is_array($bcc)){
                        $bcc=explode(",",$bcc);
                    }
                    
                    while(list(,$bcc_address) = each ( $bcc )){
                        if($bcc_address!=""){
                            $bcc_address = trim($bcc_address);
                            if(!preg_match( '/.+@.+/',$bcc_address)){
                                return $this->error="This BCC Address is incorrekt. Error: ".$bcc_address;
                            }
                        }
                    unset($bcc_address);
                    }
                    $bcc=implode(",",$bcc);
                    $this->header .= "BCC: ".$bcc." \r\n";
                }
                
                // Set Priority  default="3"!!!
                if($priority!="3"){
                    $this->header .= "X-Priority: ".$priority." \r\n";
                    if($priority=="1" || $priority=="2"){
                        $this->header .= "X-MSMail-Priority: High \r\n";
                    }
                    if($priority=="4" || $priority=="5"){
                        $this->header .= "X-MSMail-Priority: Low \r\n";
                    }
                }
                
                return $this->header;
                
            }        function &server_parse( $response )
            {
                $server_response = "";
                while ( substr( $server_response, 3, 1 ) != ' ')
                if ( !( $server_response = fgets($this->smtp_socket)))
                    return $this->error = "Couldn't read Server Response Code !!";
                if ( substr( $server_response, 0, 3 ) != $response )
                    return $this->error = "Couldn't send E-Mail. Server Response: \" $server_response \" !!!";
                return "";
            }
            /*
              Funktion smtp_send()
            */
            function &smtp_send($from, $mailto, $header, $message="", $cc="", $bcc=""){            if($this->smtp_server=="") return $this->error = "Without SMTP Server you can't send an e-mail ;) !! ";
                            if($message!=""){
                    $message = preg_replace( "/(?<!\r)\n/si", "\r\n",$message);
                }
                            if(!$this->smtp_socket=fsockopen($this->smtp_server, 25, $errno, $errstr, 30))
                    return $this->error="Couldn't connect to Smtp Server ($this->smtp_server) $errno : $errstr !!";            if($this->server_parse("220")){
                    return $this->error;
                }
                if(!$this->smtp_put("EHLO $this->smtp_server")){
                    return $this->error="Couldn't send EHLO Command !! ";
                }
                if($this->server_parse("250")){
                    return $this->error;
                }
                if(!empty($this->smtp_user) && !empty($this->smtp_pass)){                if(!$this->smtp_put("AUTH LOGIN")){
                        return $this->error =" Couldn't send \"AUTH LOGIN \" Command !!";
                    }
                    if($this->server_parse("334")){
                        return $this->error;
                    }
                    if(!$this->smtp_put(base64_encode($this->smtp_user))){
                        return $this->error="Couldn't send LOGIN USER !!";
                    }
                    if($this->server_parse("334")){
                        return $this->error;
                    }
      

  5.   

    if(!$this->smtp_put(base64_encode($this->smtp_pass))){
                        return $this->error="Couldn't send USER PASSWORD  !!";
                    }
                    if($this->server_parse("235")){
                        return $this->error;
                    }
                }
                if(!$this->smtp_put("MAIL FROM: ".$from)){
                    return $this->error="Couldn't send \" MAIL FROM: $from \" !!";
                }
                if($this->server_parse("250")){
                    return $this->error;
                }            if(!is_array($mailto)){
                    $mailto=explode(",",$mailto);
                }
                while(list(,$mailto_address) = each( $mailto )){
                    if($mailto_address!=""){
                        if(!preg_match( '/.+@.+/',$mailto_address)){
                            return $this->error = "This To: Address is in correkt. Error: ".$mailto_address;
                        }
                        if(!$this->smtp_put("RCPT TO: $mailto_address")){
                            return $this->error = "Couldn't send \" RCPT TO: $mailto_address \" !!";
                        }
                        if($this->server_parse("250")){
                            return $this->error;
                        }
                    }
                    unset($mailto_address);
                }
                
                if($cc!=""){
                    if(!is_array($cc)){
                        $cc=explode(",",$cc);
                    }                while(list(,$cc_address) = each ( $cc )){
                        if($cc_address!=""){
                            $cc_address=trim($cc_address);
                            if(!preg_match( '/.+@.+/',$cc_address)){
                                return $this->error="This CC Address is in correkt. Error: ".$cc_address;
                            }
                            if(!$this->smtp_put("RCPT TO: $cc_address")){
                                return $this->error = "Couldn't send \" RCPT TO: $cc_address \" !!";
                            }
                            if($this->server_parse("250")){
                                return $this->error;
                            }
                        }
                    }
                    unset($cc_address);
                }            if($bcc!=""){
                    if(!is_array($bcc)){
                        $bcc=explode(",",$bcc);
                    }                while(list(,$bcc_address) = each ( $bcc )){
                        if($bcc_address!=""){
                            $bcc_address=trim($bcc_address);
                            if(!preg_match( '/.+@.+/',$bcc_address)){
                                return $this->error="This BCC Address is in correkt. Error: ".$bcc_address;
                            }
                            if(!$this->smtp_put("RCPT TO: $bcc_address")){
                                return $this->error = "Couldn't send \" RCPT TO: $bcc_address \" !!";
                            }
                            if($this->server_parse("250")){
                                return $this->error;
                            }
                        }
                    }
                    unset($bcc_address);
                }            if(!$this->smtp_put("DATA")){
                    return $this->error="Couldn't send \" DATA \" Command !!";
                }
                if($this->server_parse("354")){
                    return $this->error;
                }
                if(!$this->smtp_put("$header")){
                    return $this->error="Couldn't send Header !!";
                }
                $this->smtp_put("\r\n");
                
                if(!$this->smtp_put("$message")){
                    return $this->error="Couldn't send Mail !!";
                }
                $this->smtp_put(".");
                if($this->server_parse("250")){
                    return $this->error;
                }
                $this->smtp_put("QUIT");
                fclose($this->smtp_socket);
                
                return $this->error;
            }
                
        }
    }            ?>
      

  6.   

    <?php
    /*
      Author: Jointy
      E-Mail: [email protected]
      
      Version: 1.01 (final)  !!! ONLY A SAMPLE FILE !!!
      
    */
    require("smtp.class.inc");if($_POST['smtp_server']!=""){    $mail = new SMTP($_POST['smtp_server'],$_POST['smtp_user'],$_POST['smtp_pass']);    ////////////////////////////////////////////////////////////////////////////////
        // $gen_message_id="N"; if you set "N", the function make_header() don't generate a Message-ID:
        // $gen_message_id="Y" or default (20030329022154.c5ca786a8e569dd29ddf88e7c0cd0a4e.KLAUS_MUSTERMANN@GMX.NET)    $header = $mail->make_header($_POST['from'], $_POST['mailto'], $_POST['subject'], $_POST['priority'], $_POST['cc'], $_POST['bcc']);    // Now you can make many more Header Options
        // !!! But don't forget " \r\n" at every line!!!
        // z.B.
        // PS: HTML Mail should going, too !! but i have never test it.    $header .= "Reply-To: ".$_POST['from']." \r\n";
        $header .= "Content-Type: text/plain; charset=\"iso-8859-1\" \r\n";
        $header .= "Content-Transfer-Encoding: 8bit \r\n";
        $header .= "MIME-Version: 1.0 \r\n";
        ////////////////////////////////////////////////////////////////////////////////
        $error = $mail->smtp_send($_POST['from'], $_POST['mailto'], $header, $_POST['message'], $_POST['cc'], $_POST['bcc']);    echo $error;}else{
        echo '<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
    <html>
    <head>
           <title>Mail Form for smtp.class.inc</title>
    </head>
    <body>
    <div align="left">
    <form name="news" action="class_test.php" method="POST" >
    <table>
     <tr>
      <td><b>SMTP-Server:</b></td>
      <td><input name="smtp_server" size="60" maxlength="120"></td>
     </tr>
     <tr>
      <td><b>SMTP-User:</b></td>
      <td><input name="smtp_user" size="30" maxlength="60"></td>
     </tr>
     <tr>
      <td><b>SMTP-PASS:</b></td>
      <td><input name="smtp_pass" size="30" maxlength="60" type="password"></td>
     </tr>
     <tr>
      <td><b>Sender:</b></td>
      <td><input name="from" size="60" maxlength="120"></td>
     </tr>
     <tr>
      <td><b>To:</b></td>
      <td><input name="mailto" size="60" maxlength="120">&nbsp;&nbsp;* mehrere durch "," trennen</td>
     </tr>
     <tr>
      <td><b>CC - Empf鋘ger:</b></td>
      <td><input name="cc" size="60" maxlength="120">&nbsp;&nbsp;* mehrere durch "," trennen<td>
     </tr>
     <tr>
      <td><b>BCC - Empf鋘ger:</b></td>
      <td><input name="bcc" size="60" maxlength="120">&nbsp;&nbsp;* mehrere durch "," trennen<td>
     </tr>
     <tr>
      <td><b>Priority:</b></td>
      <td><input type="integer" name="priority" size="2" maxlength="1" value="3">&nbsp;&nbsp; 3 = default</td>
     </tr>
     <tr>
      <td><b>Subject:</b></td>
      <td><input name="subject" size="60" maxlength="120"></td>
     </tr>
     <tr>
      <td><div><b>Message:</b></div></td>
      <td><textarea name="message" cols="80" rows="40"></textarea></td>
     </tr>
     <tr>
      <td><input type="submit" value="Go !!!"></td>
      <td><input type="reset" value="Reset"></td>
     </tr>
    </table>
    </form>
    </div>
    </body>
    </html>';
    }
    ?>
      

  7.   

    我试试看,不过我的smtp的服务器是公司的一个,也行吧,那也需要验证?