помогите заменить функцию fsockopen()

Тема в разделе "PHP", создана пользователем Jigan2, 1 апр 2014.

  1. Jigan2

    Jigan2

    Регистрация:
    1 дек 2013
    Сообщения:
    0
    Симпатии:
    0
    Здравствуйте уважаемые! Я начинающий и поэтому много не знаю, например этого. Есть код ниже, он отвечает за отправку уведомлений на email клиентов (например восстановление пароля). Но он не работает из за того что хостер отключил функцию fsockopen(). Хостер сказал что эту функцию можно заменить функцией mail(). Подскажите что нужно изменить в данном коде что бы работала отправка уведомлений. Заранее благодарен.

    PHP:
    <?php
    final class Email
    {
            private 
    $email_server NULL;
            private 
    $email_port 25;
            private 
    $email_user NULL;
            private 
    $email_password NULL;
            private 
    $email_from NULL;
            private 
    $email_delimiter "\n";
            private 
    $site_name NULL;

            public function 
    get$key )
            {
                    if ( !empty( 
    $this->$key ) )
                    {
                            return 
    $this->$key;
                    }
                    return 
    FALSE;
            }

            public function 
    set$key$value )
            {
                    if ( !isset( 
    $this->$key ) )
                    {
                            
    $this->$key $value;
                            return 
    TRUE;
                    }
                    return 
    FALSE;
            }

            public function 
    send$email_to$subject$message$from "" )
            {
                    
    $message base64_encode$this->html$subject$message ) );
                    
    $email_to $this->to$email_to );
                    
    $header $this->header$from );
                    if ( !( 
    $fp fsockopen$this->email_server$this->email_port$errno$errstr30 ) ) )
                    {
                            
    $this->resultLog$this->email_server.":".$this->email_port." CONNECT - Unable to connect to the SMTP server" );
                            return 
    FALSE;
                    }
                    
    stream_set_blocking$fpTRUE );
                    
    $lastmessage fgets$fp512 );
                    if ( 
    substr$lastmessage0) != "220" )
                    {
                            
    $this->resultLog$this->email_server.":".$this->email_port.$lastmessage );
                            return 
    FALSE;
                    }
                    
    fputs$fp"EHLO shopnc\r\n" );
                    
    $lastmessage fgets$fp512 );
                    if ( 
    substr$lastmessage0) != 220 && substr$lastmessage0) != 250 )
                    {
                            
    $this->resultLog$this->email_server.":".$this->email_port.( " HELO/EHLO - ".$lastmessage ) );
                            return 
    FALSE;
                    }
                    if ( 
    substr$lastmessage0) == 220 )
                    {
                            
    $lastmessage fgets$fp512 );
                            if ( 
    substr$lastmessage0) != 250 )
                            {
                                    
    $this->resultLog$this->email_server.":".$this->email_port.( " HELO/EHLO - ".$lastmessage ) );
                                    return 
    FALSE;
                            }
                    }
                    do
                    {
                            if ( !( 
    substr$lastmessage3) != "-" ) )
                            {
                                    if ( empty( 
    $lastmessage ) )
                                    {
                                            break;
                                            break;
                                    }
                            }
                            else
                            {
                                    break;
                            }
                            
    $lastmessage fgets$fp512 );
                    } while ( 
    );
                    
    fputs$fp"AUTH LOGIN\r\n" );
                    
    $lastmessage fgets$fp512 );
                    if ( 
    substr$lastmessage0) != 334 )
                    {
                            
    $this->resultLog$this->email_server.":".$this->email_port.( " AUTH LOGIN - ".$lastmessage ) );
                            return 
    FALSE;
                    }
                    
    fputs$fpbase64_encode$this->email_user )."\r\n" );
                    
    $lastmessage fgets$fp512 );
                    if ( 
    substr$lastmessage0) != 334 )
                    {
                            
    $this->resultLog$this->email_server.":".$this->email_port.( " USERNAME - ".$lastmessage ) );
                            return 
    FALSE;
                    }
                    
    fputs$fpbase64_encode$this->email_password )."\r\n" );
                    
    $lastmessage fgets$fp512 );
                    if ( 
    substr$lastmessage0) != 235 )
                    {
                            
    $this->resultLog$this->email_server.":".$this->email_port.( " PASSWORD - ".$lastmessage ) );
                            return 
    FALSE;
                    }
                    
    fputs$fp"MAIL FROM: <".preg_replace"/.*\\<(.+?)\\>.*/""\\1"$this->email_from ).">\r\n" );
                    
    $lastmessage fgets$fp512 );
                    if ( 
    substr$lastmessage0) != 250 )
                    {
                            
    fputs$fp"MAIL FROM: <".preg_replace"/.*\\<(.+?)\\>.*/""\\1"$this->email_from ).">\r\n" );
                            
    $lastmessage fgets$fp512 );
                            if ( 
    substr$lastmessage0) != 250 )
                            {
                                    
    $this->resultLog$this->email_server.":".$this->email_port.( " MAIL FROM - ".$lastmessage ) );
                                    return 
    FALSE;
                            }
                    }
                    
    fputs$fp"RCPT TO: <".preg_replace"/.*\\<(.+?)\\>.*/""\\1"$email_to ).">\r\n" );
                    
    $lastmessage fgets$fp512 );
                    if ( 
    substr$lastmessage0) != 250 )
                    {
                            
    fputs$fp"RCPT TO: <".preg_replace"/.*\\<(.+?)\\>.*/""\\1"$email_to ).">\r\n" );
                            
    $lastmessage fgets$fp512 );
                            
    $this->resultLog$this->email_server.":".$this->email_port.( " RCPT TO - ".$lastmessage ) );
                            return 
    FALSE;
                    }
                    
    fputs$fp"DATA\r\n" );
                    
    $lastmessage fgets$fp512 );
                    if ( 
    substr$lastmessage0) != 354 )
                    {
                            
    $this->resultLog$this->email_server.":".$this->email_port.( " DATA - ".$lastmessage ) );
                            return 
    FALSE;
                    }
                    
    fputs$fp"Date: ".gmdate"r" )."\r\n" );
                    
    fputs$fp"To: ".$email_to."\r\n" );
                    
    fputs$fp"Subject: ".$subject."\r\n" );
                    
    fputs$fp$header."\r\n" );
                    
    fputs$fp"\r\n\r\n" );
                    
    fputs$fp"{$message}\r\n.\r\n" );
                    
    $lastmessage fgets$fp512 );
                    if ( 
    substr$lastmessage0) != 250 )
                    {
                            
    $this->resultLog$this->email_server.":".$this->email_port.( " END - ".$lastmessage ) );
                    }
                    
    fputs$fp"QUIT\r\n" );
                    return 
    TRUE;
            }

            public function 
    send_sys_email$email_to$subject$message )
            {
                    
    $this->set"email_server"$GLOBALS['setting_config']['email_host'] );
                    
    $this->set"email_port"$GLOBALS['setting_config']['email_port'] );
                    
    $this->set"email_user"$GLOBALS['setting_config']['email_id'] );
                    
    $this->set"email_password"$GLOBALS['setting_config']['email_pass'] );
                    
    $this->set"email_from"$GLOBALS['setting_config']['email_addr'] );
                    
    $this->set"site_name"$GLOBALS['setting_config']['site_name'] );
                    
    $result $this->send$email_to$subject$message );
                    return 
    $result;
            }

            private function 
    html$subject$message )
            {
                    
    $message preg_replace"/href\\=\"(?!http\\:\\/\\/)(.+?)\"/i""href=\"".SiteUrl."\\1\""$message );
                    
    $tmp .= "<html><head>";
                    
    $tmp .= "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=".CHARSET."\">";
                    
    $tmp .= "<title>".$subject."</title>";
                    
    $tmp .= "</head><body>";
                    
    $tmp .= $subject."<br />".$message;
                    
    $tmp .= "</body></html>";
                    
    $message $tmp;
                    unset( 
    $tmp );
                    return 
    $message;
            }

            private function 
    to$email_to )
            {
                    
    $email_to preg_match"/^(.+?) \\<(.+?)\\>\$/"$email_to$mats ) ? $this->email_user "=?".CHARSET."?B?".base64_encode$mats[1] ).( "?= <".$mats['2'].">" ) : $mats[2] : $email_to;
                    return 
    $email_to;
            }

            private function 
    subject$subject )
            {
                    
    $subject "=?".CHARSET."?B?".base64_encodepreg_replace"/[\r|\n]/""""[".$this->site_name."] ".$subject ) )."?=";
                    return 
    $subject;
            }

            private function 
    message$message )
            {
                    
    $message chunk_splitbase64_encodestr_replace"\n""\r\n"str_replace"\r""\n"str_replace"\r\n""\n"str_replace"\n\r""\r"$message ) ) ) ) ) );
                    return 
    $message;
            }

            private function 
    header$from "" )
            {
                    if ( 
    $from == "" )
                    {
                            
    $from "=?".CHARSET."?B?".base64_encode$this->site_name )."?= <".$this->email_from.">";
                    }
                    else
                    {
                            
    $from preg_match"/^(.+?) \\<(.+?)\\>\$/"$from$mats ) ? "=?".CHARSET."?B?".base64_encode$mats[1] ).( "?= <".$mats['2'].">" ) : $from;
                    }
                    
    $header "From: ".$fro."{$this->email_delimiter}";
                    
    $header .= "X-Priority: 3".$this->email_delimiter;
                    
    $header .= "X-Mailer: ShopNC ".$this->email_delimiter;
                    
    $header .= "MIME-Version: 1.0".$this->email_delimiter;
                    
    $header .= "Content-type: text/html; ";
                    
    $header .= "charset=".CHARSET."{$this->email_delimiter}";
                    
    $header .= "Content-Transfer-Encoding: base64".$this->email_delimiter;
                    
    $header .= "Message-ID: <".gmdate"YmdHs" ).".".substrmd5$message.microtime( ) ), 0).rand100000999999 )."@".$_SERVER['HTTP_HOST'].( ">".$this->email_delimiter );
                    return 
    $header;
            }

            private function 
    resultLog$msg )
            {
                    if ( 
    DeBug === TRUE )
                    {
                            
    $fp fopen"txt.txt""a+" );
                            
    fwrite$fp$msg );
                            
    fclose$fp );
                            return 
    TRUE;
                    }
                    return 
    TRUE;
            }

    }

    if ( !
    defined"InShopNC" ) )
    {
            exit( 
    "Access Invalid!" );
    }
    ?>
     
  2. Archey

    Archey

    Регистрация:
    3 мар 2014
    Сообщения:
    2
    Симпатии:
    0
    Проще подключить какой нибудь другой класс и пользоваться им (например phpmailer, очень простой)