mail是调用php.ini中配置的smtp你可以用网上其他的代码,不用mail函数

解决方案 »

  1.   

    估计这个不是代码的问题,是你的php没有装发邮件的插件,或者没有设置好之类的
      

  2.   

    看错误提示,你的机器没有安装smtp服务器,你可以找一个不需要验证免费的smtp服务器。或者,找个用socket发邮件的类,不要用mail
      

  3.   

    多谢各位的帮忙啊,但我找了半天用socket发送邮件的例子,没弄成啊,各位有没有做过这方面的,有的话给我发一下你们测试成功的例子啊,快急死我了,弄了两天,都没成功,老板急的要啊,如果大家有的话,给我发到  多谢多谢各位的帮忙了!
      

  4.   

    //不需要修改php.ini发邮件,这个是smtp不需要验证情况下用的,如果需要验证的话,要去找个php 发邮件类
    ini_set('SMTP', '你的smtp服务器,比如smtp.qq.com');
    ini_set('smtp_port', 25);
    ini_set('sendmail_from', '你的邮箱');
    if (mail($emailto, $subject, $message, $headers)) {
    //成功
    } else {
    //失败
    }
      

  5.   

    class MailCls{
        private $mEmails;
        
        function setEmailInfo( $emails ){
            if( is_array( $emails ) ){
                $this->mEmails['email_to'] = $emails['email_to'];
                #对邮件标题进行处理
                if( isset( $emails['email_subject'] ) || !empty($emails['email_subject'])) {
                    eval("$email_subject = "".$emails['email_subject']."";");
                    $email_subject = str_replace(" ", '', str_replace(" ", '', $emails['email_subject'] ));
                    $this->mEmails['email_subject'] = $emails['email_subject'];
                }
                
                #对邮件内容进行处理
                if( isset( $emails['email_message']) || !empty($emails['email_message'])) {
                    eval("$email_message = "".$emails['email_message']."";");
                    $emails['email_message'] = str_replace(" .", "  ..", str_replace(" ", " ", str_replace(" ", " ", str_replace(" ", " ", str_replace(" ", " ", $emails['email_message'])))));
                    $this->mEmails['email_message'] = $emails['email_message'];
                }
                
                #对邮件来源进行处理
                if( isset($emails['email_from']) || !empty($emails['email_from']))
                    $this->mEmails['email_from'] = $emails['email_from'];
                else
                    $this->mEmails['email_from'] = '<'.$_SERVER['SERVER_ADMIN'].'>';
            }
        }
        
        function getEmails( $elements  ){
            if( isset( $elements ) || !empty( $elements ))
                return $this->mEmails[$elements];
            else
            return $this->mEmails;
        }
        
        function __destruct(){
            unset( $this );
        }
    }
    class sendMail extends MailCls{
        private $mMailCfg;
        
        function __construct( $mailcfg ){
            if(is_array( $mailcfg ))
                $this->mMailCfg = $mailcfg;
        }
        
        #发送邮件函数
        function sendMails( ){
            if(!$fp = fsockopen($this->mMailCfg['server'], $this->mMailCfg['port'], $errno, $errstr, 30)) {
                    errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) CONNECT - Unable to connect to the SMTP server, please check your "mail_config.php".", 0);
                }
             stream_set_blocking($fp, true);        $lastmessage = fgets($fp, 512);
            if(substr($lastmessage, 0, 3) != '220') {
                errorlog('SMTP', "$this->mMailCfg[server]:$this->mMailCfg[port] CONNECT - $lastmessage", 0);
            }        fputs($fp, ($this->mMailCfg['auth'] ? 'EHLO' : 'HELO')." hoodong ");
            $lastmessage = fgets($fp, 512);
            
            if(substr($lastmessage, 0, 3) != 220 && substr($lastmessage, 0, 3) != 250) {
                errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) HELO/EHLO - $lastmessage", 0);
            }        while(1) {
                $lastmessage = fgets($fp, 512);
                if(substr($lastmessage, 3, 1) != '-' || empty($lastmessage)) {
                     break;
                 }
            }         if($this->mMailCfg['auth']) {
                fputs($fp, "AUTH LOGIN ");
                $lastmessage = fgets($fp, 512);
                
                if(substr($lastmessage, 0, 3) != 334) {
                    errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) AUTH LOGIN - $lastmessage", 0);
            }        fputs($fp, base64_encode($this->mMailCfg['auth_username'])." ");
            $lastmessage = fgets($fp, 512);
            
            if(substr($lastmessage, 0, 3) != 334) {
                errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) USERNAME - $lastmessage", 0);
            }        fputs($fp, base64_encode($this->mMailCfg['auth_password'])." ");
            $lastmessage = fgets($fp, 512);
            
            if(substr($lastmessage, 0, 3) != 235) {
                errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) PASSWORD - $lastmessage", 0);
            }        $email_from = $this->mMailCfg['from'];
        }    fputs($fp, "MAIL FROM: ".preg_replace("/.*<(.+?)>.*/", "\1", $this->getEmails('email_from'))." ");
        $lastmessage = fgets($fp, 512);
        
        if(substr($lastmessage, 0, 3) != 250) {
            fputs($fp, "MAIL FROM: <".preg_replace("/.*<(.+?)>.*/", "\1", $this->getEmails('email_from'))."> ");
            $lastmessage = fgets($fp, 512);
            if(substr($lastmessage, 0, 3) != 250) {
                errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) MAIL FROM - $lastmessage", 0);
            }
        }    foreach(explode(',', $this->getEmails('email_to')) as $to_user) {
            $to_user = trim( $to_user );
            if( $to_user ) {
                fputs( $fp, "RCPT TO: $to_user " );
                $lastmessage = fgets( $fp, 512 );
                if(substr($lastmessage, 0, 3) != 250) {
                    fputs($fp, "RCPT TO: <$to_user> ");
                    $lastmessage = fgets($fp, 512);
                    errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) RCPT TO - $lastmessage", 0);
                }
            }
        }    fputs($fp, "DATA ");
        $lastmessage = fgets($fp, 512);
        if(substr($lastmessage, 0, 3) != 354) {
            errorlog('SMTP', "($this->mMailCfg[server]:$this->mMailCfg[port]) DATA - $lastmessage", 0);
        }     fputs($fp, "To: ".$this->getEmails('email_to')." From: ".$this->getEmails('email_from')." Subject: ".str_replace(" ", ' ', $this->getEmails('email_subject'))." ".$this->getEmails('email_message')." . "); 
        fputs($fp, "QUIT ");
        }
        
        function getEmailCfg( $elements ){
            if(isset( $elements ) || !empty( $elements ))
                return $this->mMailCfg[$elements];
            else 
                return $this->mMailCfg;
        }
        
        function __destruct(){
            unset($fp);
            unset($this);
        }
    }/*@调用演示.请设置下面信息@*/
    #######################################################################$emails = array(
    'email_to' => '[email protected]',                        #收件人地址
    'email_subject' => 'test',                                #邮件标题
    'email_message' => 'ksadasdasdasdsadasfafdasfdsaff',    #邮件正文
    'email_from' => ' <[email protected]>',            #邮件来源
    );    
    ##########################################################################    
       $mailcfg['server'] = 'smtp.gmail.com';            #smtp服务器地址,这只是例子,你还是需要找一个smtp服务器,比如你公司的就可以    
        $mailcfg['port'] = '25';                            #smtp端口
        $mailcfg['auth'] = 1;                                #显示作者
        $mailcfg['from'] = 'gmail <[email protected]>';    #发件人地址
        $mailcfg['auth_username'] = '[email protected]';    #发件人邮箱
        $mailcfg['auth_password'] = '1234567';                #发件人邮箱密码#调用:
    $sm = new sendMail( $mailcfg );
    $sm->setEmailInfo( $emails );
    $sm->sendMails();