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

📄 email.php

📁 PHP 建站工具,CMS系统,类似与oscommerce
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php
/* --------------------------------------------------------------
   $Id: email.php,v 1.1 2003/09/06 22:05:29 oldpa   Exp $   

   TWE-Commerce - community made shopping
   http://www.oldpa.com.twCopyright (c) 2003 TWE-Commerce
   --------------------------------------------------------------
   based on: 
   (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
   (c) 2002-2003 osCommerce(email.php,v 1.7 2003/05/29); www.oscommerce.com 
   (c) 2003	 nextcommerce (zemail.php,v 1.6 2003/08/18); www.nextcommerce.org

   Released under the GNU General Public License 
   
   mail.php - a class to assist in building mime-HTML eMails
  
   The original class was made by Richard Heyes <richard@phpguru.org>
   and can be found here: http://www.phpguru.org
  
   Renamed and Modified by Jan Wildeboer for osCommerce   
   --------------------------------------------------------------
*/

  class email{
    var $html;
    var $text;
    var $output;
    var $html_text;
    var $html_images;
    var $image_types;
    var $build_params;
    var $attachments;
    var $headers;

    /***************************************
     ** Constructor function. Sets the headers
     ** if supplied.
     ***************************************/

    function email($headers = array()){
      /***************************************
       ** Initialise some variables.
       ***************************************/
      $this->html_images  = array();
      $this->headers      = array();

      if (EMAIL_LINEFEED == 'CRLF') {
        $this->lf = "\r\n";
      } else {
        $this->lf = "\n";
      }

      /***************************************
      ** If you want the auto load functionality
      ** to find other image/file types, add the
      ** extension and content type here.
      ***************************************/

      $this->image_types = array(
        'gif'  => 'image/gif',
        'jpg'  => 'image/jpeg',
        'jpeg'  => 'image/jpeg',
        'jpe'  => 'image/jpeg',
        'bmp'  => 'image/bmp',
        'png'  => 'image/png',
        'tif'  => 'image/tiff',
        'tiff'  => 'image/tiff',
        'swf'  => 'application/x-shockwave-flash'
      );

      /***************************************
       ** Set these up
       ***************************************/

      $this->build_params['html_encoding']  = 'quoted-printable';
      $this->build_params['text_encoding']  = '7bit';
      $this->build_params['html_charset']    = CHARSET;
      $this->build_params['text_charset']    = CHARSET;
      $this->build_params['text_wrap']    = 998;

      /***************************************
       ** Make sure the MIME version header is first.
       ***************************************/

      $this->headers[] = 'MIME-Version: 1.0';

      foreach($headers as $value){
        if(!empty($value))
          $this->headers[] = $value;
      }
    }

    /***************************************
     ** This function will read a file in
     ** from a supplied filename and return
     ** it. This can then be given as the first
     ** argument of the the functions
     ** add_html_image() or add_attachment().
     ***************************************/
    function get_file($filename){
      $return = '';
      if($fp = fopen($filename, 'rb')){
        while(!feof($fp)){
          $return .= fread($fp, 1024);
        }
        fclose($fp);
        return $return;
      }else{
        return FALSE;
      }
    }

    /***************************************
     ** Function for extracting images from
     ** html source. This function will look
     ** through the html code supplied by add_html()
     ** and find any file that ends in one of the
     ** extensions defined in $obj->image_types.
     ** If the file exists it will read it in and
     ** embed it, (not an attachment).
     **
     ** Function contributed by Dan Allen
     ***************************************/
    function find_html_images($images_dir) {
      // Build the list of image extensions
      while(list($key,) = each($this->image_types))
        $extensions[] = $key;

      preg_match_all('/"([^"]+\.('.implode('|', $extensions).'))"/Ui', $this->html, $images);

      for($i=0; $i<count($images[1]); $i++){
        if(file_exists($images_dir.$images[1][$i])){
          $html_images[] = $images[1][$i];
          $this->html = str_replace($images[1][$i], basename($images[1][$i]), $this->html);
        }
      }

      if(!empty($html_images)){
        // If duplicate images are embedded, they may show up as attachments, so remove them.
        $html_images = array_unique($html_images);
        sort($html_images);

        for($i=0; $i<count($html_images); $i++){
          if($image = $this->get_file($images_dir.$html_images[$i])){
            $content_type = $this->image_types[substr($html_images[$i], strrpos($html_images[$i], '.') + 1)];
            $this->add_html_image($image, basename($html_images[$i]), $content_type);
          }
        }
      }
    }

    /***************************************
     ** Adds plain text. Use this function
     ** when NOT sending html email
     ***************************************/
    function add_text($text = ''){
      $this->text = twe_convert_linefeeds(array("\r\n", "\n", "\r"), $this->lf, $text);
    }

    /***************************************
     ** Adds a html part to the mail.
     ** Also replaces image names with
     ** content-id's.
     ***************************************/
    function add_html($html, $text = NULL, $images_dir = NULL){
      $this->html = twe_convert_linefeeds(array("\r\n", "\n", "\r"), '<br>', $html);
      $this->html_text = twe_convert_linefeeds(array("\r\n", "\n", "\r"), $this->lf, $text);

      if(isset($images_dir))
        $this->find_html_images($images_dir);
    }

    /***************************************
     ** Adds an image to the list of embedded
     ** images.
     ***************************************/
    function add_html_image($file, $name = '', $c_type='application/octet-stream'){
      $this->html_images[] = array(
        'body'   => $file,
        'name'   => $name,
        'c_type' => $c_type,
        'cid'    => md5(uniqid(time()))
      );
    }

    /***************************************
     ** Adds a file to the list of attachments.
     ***************************************/
    function add_attachment($file, $name = '', $c_type='application/octet-stream', $encoding = 'base64'){
      $this->attachments[] = array(
        'body'    => $file,
        'name'    => $name,
        'c_type'  => $c_type,
        'encoding'  => $encoding
      );
    }

    /***************************************
     ** Adds a text subpart to a mime_part object
     ***************************************/
    function &add_text_part(&$obj, $text){
      $params['content_type'] = 'text/plain';
      $params['encoding']     = $this->build_params['text_encoding'];
      $params['charset']      = $this->build_params['text_charset'];
      if(is_object($obj)){
        return $obj->addSubpart($text, $params);
      }else{
        return new mime($text, $params);
      }
    }

    /***************************************
    ** Adds a html subpart to a mime_part object
    ***************************************/
    function &add_html_part(&$obj) {
      $params['content_type'] = 'text/html';
      $params['encoding']     = $this->build_params['html_encoding'];
      $params['charset']      = $this->build_params['html_charset'];
      if(is_object($obj)){
        return $obj->addSubpart($this->html, $params);
      }else{
        return new mime($this->html, $params);
      }
    }

    /***************************************
     ** Starts a message with a mixed part
     ***************************************/
    function &add_mixed_part() {
      $params['content_type'] = 'multipart/mixed';
      return new mime('', $params);
    }

    /***************************************
     ** Adds an alternative part to a mime_part object
     ***************************************/
    function &add_alternative_part(&$obj) {
      $params['content_type'] = 'multipart/alternative';

⌨️ 快捷键说明

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