📄 email.php
字号:
<?php
/*
$Id: email.php,v 1.1.1.1 2004/10/09 14:29:08 cvsadmin Exp $
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2003 osCommerce
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;
function email($headers = '') {
if ($headers == '') $headers = array();
$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 mime-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');
$this->build_params['html_encoding'] = 'quoted-printable';
$this->build_params['text_encoding'] = '7bit';
$this->build_params['html_charset'] = constant('CHARSET');
$this->build_params['text_charset'] = constant('CHARSET');
$this->build_params['text_wrap'] = 998;
/**
* Make sure the MIME version header is first.
*/
$this->headers[] = 'MIME-Version: 1.0';
reset($headers);
while (list(,$value) = each($headers)) {
if (tep_not_null($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 (tep_not_null($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 = tep_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 = tep_convert_linefeeds(array("\r\n", "\n", "\r"), '<br>', $html);
$this->html_text = tep_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
*/
/* HPDL PHP3 */
// function &add_text_part(&$obj, $text) {
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
*/
/* HPDL PHP3 */
// function &add_html_part(&$obj) {
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
*/
/* HPDL PHP3 */
// function &add_mixed_part() {
function add_mixed_part() {
$params['content_type'] = 'multipart/mixed';
return new mime('', $params);
}
/**
* Adds an alternative part to a mime_part object
*/
/* HPDL PHP3 */
// function &add_alternative_part(&$obj) {
function add_alternative_part(&$obj) {
$params['content_type'] = 'multipart/alternative';
if (is_object($obj)) {
return $obj->addSubpart('', $params);
} else {
return new mime('', $params);
}
}
/**
* Adds a html subpart to a mime_part object
*/
/* HPDL PHP3 */
// function &add_related_part(&$obj) {
function add_related_part(&$obj) {
$params['content_type'] = 'multipart/related';
if (is_object($obj)) {
return $obj->addSubpart('', $params);
} else {
return new mime('', $params);
}
}
/**
* Adds an html image subpart to a mime_part object
*/
/* HPDL PHP3 */
// function &add_html_image_part(&$obj, $value) {
function add_html_image_part(&$obj, $value) {
$params['content_type'] = $value['c_type'];
$params['encoding'] = 'base64';
$params['disposition'] = 'inline';
$params['dfilename'] = $value['name'];
$params['cid'] = $value['cid'];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -