⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 email.class.inc.php

📁 This is the script which used on 10minutemail.com for temporary email.
💻 PHP
📖 第 1 页 / 共 3 页
字号:
            
        // Output
        echo $out->finish_xml();
        exit;
    }
    
// -----------------------------------------------------------------------------




    /**
     * Get e-mail address
     * 
     * @access public
     */
    function get_address($set = false)
    {
        $data = array();
        t12l_module::call_module('frontend_use_functions', $data, $t12l['module_additional']);
        if ($t12l['module_additional']['allow_use_functions'] == 'N') {
            return false;
        }
        
        // Dispose of old e-mail                
        if (!t12l_gpc_vars('a') and t12l_session::get('address_timestamp') < (t12l_time::current_timestamp() - $this->lifetime)) {
            if ($this->destroy_address()) {
                if ($address = $this->new_address($set)) {
                    $address['time_left'] = $this->lifetime;
                    return $address;
                } else {
                    return false;
                }
            }
        }
                
        // Get address from existing session
        if (!t12l_gpc_vars('a') and $address = t12l_session::get()) {
            $address['time_left'] = $this->lifetime - (t12l_time::current_timestamp() - $address['address_timestamp']);
            return $address;
        }
        
        // Create new e-mail
        if (t12l_gpc_vars('a')) {
            $set = true;
        }
        if ($address = $this->new_address($set)) {
            $address['time_left'] = $this->lifetime;
            return $address;
        } else {
            return false;
        }
    }
    
// -----------------------------------------------------------------------------




    /**
     * Reset time
     * 
     * @access public
     */
    function reset_time()
    {        
        // Create new address
        $address_email      = t12l_session::get('address_email');
        $address_id         = md5($address_email);
        $address_timestamp  = t12l_time::current_timestamp();
        
        t12l_session::add(array('address_timestamp' => $address_timestamp));
             
        // Update timestamp in e-mail table
        $data   = array('mail_timestamp' => $address_timestamp);
        $where  = " mail_address_id = ? ";
        $where_data = array($address_id); 
        if ($res = t12l_database::update('mail', $data, $where, $where_data)) {
            // Update timestamp in address table
            $data  = array('address_timestamp' => $address_timestamp);
            $where = " address_id = ? AND address_session_id = ?";
            $where_data = array($address_id, session_id());
            if ($res = t12l_database::update('address', $data, $where, $where_data)) {
                return true;
            }
        }
    }

// -----------------------------------------------------------------------------




    /**
     * Create new address
     * 
     * @access public
     */
    function new_address($set = false)
    {   
        global $t12l;
        
        if ($set == true and isset($t12l['_post']['setemailaddress'])) {
            $address_email = $t12l['_post']['setemailaddress'] . '@' . $t12l['email_address_host_name'];
        } elseif ($set == true and t12l_gpc_vars('a')) {
            $address_email = t12l_gpc_vars('a');
        } else {
        
            // Create new address
            $address_email      = $this->create_address(8);
        }
        
        
        $address_id         = md5($address_email);
        $address_timestamp  = t12l_time::current_timestamp();
        
             
        // Create new entry        
        $data = array(  'address_id'                => $address_id,
                        'address_email'             => $address_email,
                        'address_timestamp'         => $address_timestamp,
                        'address_ip'                => @$_SERVER['REMOTE_ADDR'],
                        'address_session_id'        => session_id(),
                        );
                         
        // Write address to database
        if ($res = t12l_database::insert('address', $data)) {
            
            // Write address to session
            $session = array(   'address_id'        => $address_id,
                                'address_email'     => $address_email,
                                'address_timestamp' => $address_timestamp,
                                );
            t12l_session::add($session);
            
            // Write address statistics
            t12l_setting::increase('created_addresses');
            
            return $data;
        }
    }

// -----------------------------------------------------------------------------




    /**
     * Create e-mail
     * 
     */
    function create_address($length, $run = 1)
    {
        global $t12l;
        require_once 'Text/Password.php'; 
        $email_address = Text_Password::create($length) . '@' . $t12l['email_address_host_name'];
        $address_id = md5($email_address);
        $sql = "SELECT  address_id FROM " . T12L_ADDRESS_TABLE . " 
                WHERE   address_id = ? ";
        if (!$res = t12l_database::query($sql, array($address_id))) {
            return $email_address;
        }
        if ($res->numRows() > 0) {
            if ($run >= $this->runs) {
                $run = 0;
                $length++;
                if ($length >= $this->maxlength) {
                    t12l_system_debug::add_message('Create Address', 'Too Much Runs', 'error');
                    return false;
                }
            }
            $email_address = $this->create_address($length, ++$run);
        }
        return $email_address;        
    }          

//------------------------------------------------------------------------------




    /**
     * Dispose of e-mail
     * 
     */
    function destroy_address()
    {
        $session = array(   'address_id'        => '',
                            'address_email'     => '',
                            'address_timestamp' => '',
                            );
        t12l_session::add($session);
        return true;
    }          

//------------------------------------------------------------------------------




    /**
     * Trigger download of e-mails
     * 
     */
    function trigger_mail_download()
    {   
        global $t12l;
        
        @ini_set('max_execution_time', $this->runtime);
        
        if (!function_exists('imap_open')
                or $t12l['alternative_mail_download'] == true) {
            require_once 'mailbox.class.inc.php';        
        } else {
            require_once 'mailboximap.class.inc.php';
        }
        
        for ($i = 1; $i <= $this->download_connection_num; $i++)
        {
            $downloaded_emails = $this->mail_download();
            if ($downloaded_emails == false
                    or $downloaded_emails <= 0) {
                t12l_system_debug::add_message('Trigger Mail Download', 'Number of connections: ' . $i, 'debug');
                return false;
            }
        }
        
        t12l_system_debug::add_message('Trigger Mail Download', 'Some mails remaining in mailbox', 'debug');
    }          

//------------------------------------------------------------------------------




    /**
     * Download e-mails and write content to database
     * 
     */
    function mail_download()
    {   
        global $t12l;
        
        $mailbox_add_path = '';
        $mailbox_add_path_ssl = '';
        
        if ($t12l['non_validate_command'] == 'Y') {
            $mailbox_add_path       .= '/novalidate-cert';
            $mailbox_add_path_ssl   .= '/novalidate-cert';
        }        
        
        if (!function_exists('imap_open')
                or $t12l['alternative_mail_download'] == true) {        
            $mail = new t12l_mailbox($this->delete_emails);
        } else {  
            $mail = new t12l_mailboximap();
        }
              
        // Connect to mailbox
        // Imap setting
        $mailbox_path = 'pop3' . $mailbox_add_path;
        // Both
        $mailbox_port = $t12l['mailbox_port'];
        // pop3 class
        $mailbox_tls  = 0;
        
        if ($t12l['mailbox_connect_ssl'] == 'Y') {
            // Imap setting
            $mailbox_path = 'pop3/ssl' . $mailbox_add_path_ssl;
            // Both
            $mailbox_port = $t12l['mailbox_port_ssl'];
            // pop3 class
            $mailbox_tls  = 1;
        }
        $mailbox = array(   'hostname'  => $t12l['mailbox_hostname'],
                            'path'      => $mailbox_path,
                            'port'      => $mailbox_port,
                            'user'      => $t12l['mailbox_username'],
                            'password'  => $t12l['mailbox_password'],
                            'tls'       => $mailbox_tls,
                            );
         
        if (!$mail->open($mailbox)) {
            return false;
        }


        // Number of messages in mailbox
        $number = 0;
        $mail->number($number);
        if ($number <= 0) {
            $mail->close();
            return false;
        }
            
        t12l_system_debug::add_message('Mailbox Status', $number . ' mail(s) in mailbox.', 'debug');
        
        $email_number = $this->download_email_num;
        if ($number < $this->download_email_num) {
            $email_number = $number;
        }
        
        // Check To: headers
        for ($i = 1; $i <= $email_number; $i++)
        {
            $message = $mail->fetch_message($i);
            $mail->mime_decode($i);
            
            if (!$to = $mail->get_header($i, 'to')) {                        
                // Delete e-mail
                $mail->delete_message($i); 
                continue;
            }
            
            $to = explode(',', $to);
            $num = sizeof($to);
            for ($t = 0; $t < $num; $t++)
            {
                $mail_address = $to[$t];
                
                if (strpos($mail_address, '<') !== false) {
                    $mail_address = substr($mail_address, strpos($mail_address, '<') + 1);
                }
                
                if (strpos($mail_address, '>') !== false) {                
                    $mail_address = substr($mail_address, 0, strpos($mail_address, '>'));
                }
                
                $mail_address = trim($mail_address);
                $mail_host    = substr($mail_address, strpos($mail_address, '@') + 1);

                if ($mail_host != $t12l['email_address_host_name']) {
                    // Delete e-mail 
                    $mail->delete_message($i);
                    continue;
                }
                
                // Count number of received e-mails
                t12l_setting::increase('received_emails');
                
                // Check address in database
                $address            = $mail_address;
                $address_id         = md5($address);
                $address_timestamp  = t12l_time::current_timestamp() - $this->lifetime;
                $sql = "SELECT  address_id 
                        FROM    " . T12L_ADDRESS_TABLE . " 
                        WHERE   address_id = ? 
                        AND     address_timestamp > ?";
                if (!$res = t12l_database::query($sql, array($address_id, $address_timestamp))) {
                    return false;
                }
                if ($res->numRows() > 0) {
                    t12l_system_debug::add_message('Mail Status', 'Mail is valid: ' . $address, 'debug');
                    
                    $subject    = $mail->get_header($i, 'subject');
                    $body       = $mail->get_body($i);
                    $from       = $mail->get_header($i, 'from');
                    $from       = $mail->get_header($i, 'from');
                    $charset    = $mail->get_character_set($i);
                    if ($this->insert_mail($address, $from, $subject, $body, $charset)) {
                        // Delete e-mail
                        $mail->delete_message($i);
                    }
                } else {
                    // Delete e-mail
                    $mail->delete_message($i);
                    t12l_system_debug::add_message('Mail Status', 'Mail is NOT valid: ' . $address, 'debug');
                    
                    // Count number of expired e-mails
                    t12l_setting::increase('expired_emails');
                }
            }
        }
        if ($this->delete_emails == true) {
            $mail->perform_delete();
        }        
        $mail->close();
        
        
        // Return number of mails in mailbox
        return $number;
    }

//------------------------------------------------------------------------------




    /**
     * Write mail data to database
     * 
     */
    function insert_mail($address, $from, $subject, $body, $charset)
    {                
        // Write into comment table
        if (!$mail_id = t12l_database::next_id('mail')) {
            return false;
        }
        
        $mail_data = array( 'mail_id'           => $mail_id,
                            'mail_address_id'   => md5($address),
                            'mail_from'         => $from,
                            'mail_subject'      => $subject,
                            'mail_excerpt'      => substr(strip_tags($body), 0, $this->excerpt_length),
                            'mail_body'         => $body,
                            'mail_character_set'=> $charset,
                            'mail_timestamp'    => t12l_time::current_timestamp(),
                            );
        if ($res = t12l_database::insert('mail', $mail_data)) {
            return true;
        }
    }          

//------------------------------------------------------------------------------




    /**
     * Get mail details from database
     * 
     * @access public
     */
    function get_mail($mail)
    {
        global $t12l;
        
        if (!is_numeric($mail)) {
            return false;
        }
        
        if ($t12l['public_mails'] == 'N' and !t12l_session::get('address_id')) {
            return false;
        }
        
        $sql = '';
        
        // Private e-mails - only the user that created the e-mail address

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -