/*~ class.phpmailer.php
.---------------------------------------------------------------------------.
| Software: PHPMailer - PHP email class |
-| Version: 2.0.2 |
+| Version: 2.0.4 |
| Contact: via sourceforge.net support pages (also www.codeworxtech.com) |
| Info: http://phpmailer.sourceforge.net |
| Support: http://sourceforge.net/projects/phpmailer/ |
* PHPMailer - PHP email transport class
* @package PHPMailer
* @author Andy Prevost
- * @copyright 2004 - 2008 Andy Prevost
+ * @copyright 2004 - 2009 Andy Prevost
*/
class PHPMailer {
* Holds PHPMailer version.
* @var string
*/
- var $Version = "2.0.2";
+ var $Version = "2.0.4";
/**
* Sets the email address that a reading confirmation will be sent.
var $language = array();
var $error_count = 0;
var $LE = "\n";
+ var $sign_cert_file = "";
var $sign_key_file = "";
var $sign_key_pass = "";
} elseif (file_exists($lang_path.'phpmailer.lang-en.php')) {
include($lang_path.'phpmailer.lang-en.php');
} else {
- $this->SetError('Could not load language file');
- return false;
+ $PHPMAILER_LANG = array();
+ $PHPMAILER_LANG["provide_address"] = 'You must provide at least one ' .
+ $PHPMAILER_LANG["mailer_not_supported"] = ' mailer is not supported.';
+ $PHPMAILER_LANG["execute"] = 'Could not execute: ';
+ $PHPMAILER_LANG["instantiate"] = 'Could not instantiate mail function.';
+ $PHPMAILER_LANG["authenticate"] = 'SMTP Error: Could not authenticate.';
+ $PHPMAILER_LANG["from_failed"] = 'The following From address failed: ';
+ $PHPMAILER_LANG["recipients_failed"] = 'SMTP Error: The following ' .
+ $PHPMAILER_LANG["data_not_accepted"] = 'SMTP Error: Data not accepted.';
+ $PHPMAILER_LANG["connect_host"] = 'SMTP Error: Could not connect to SMTP host.';
+ $PHPMAILER_LANG["file_access"] = 'Could not access file: ';
+ $PHPMAILER_LANG["file_open"] = 'File Error: Could not open file: ';
+ $PHPMAILER_LANG["encoding"] = 'Unknown encoding: ';
+ $PHPMAILER_LANG["signing"] = 'Signing Error: ';
}
$this->language = $PHPMAILER_LANG;
} elseif (count($this->cc) == 0) {
$result .= $this->HeaderLine('To', 'undisclosed-recipients:;');
}
- if(count($this->cc) > 0) {
- $result .= $this->AddrAppend('Cc', $this->cc);
- }
}
$from = array();
fclose($fp);
$signed = tempnam("", "signed");
- if (@openssl_pkcs7_sign($file, $signed, "file://".$this->sign_key_file, array("file://".$this->sign_key_file, $this->sign_key_pass), null)) {
+ if (@openssl_pkcs7_sign($file, $signed, "file://".$this->sign_cert_file, array("file://".$this->sign_key_file, $this->sign_key_pass), null)) {
$fp = fopen($signed, "r");
$result = fread($fp, filesize($this->sign_key_file));
+ $result = '';
+ while(!feof($fp)){
+ $result = $result . fread($fp, 1024);
+ }
fclose($fp);
} else {
$this->SetError($this->Lang("signing").openssl_error_string());
$cid = $this->attachment[$i][7];
$mime[] = sprintf("--%s%s", $this->boundary[1], $this->LE);
- $mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $name, $this->LE);
+ $mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $this->EncodeHeader($this->SecureHeader($name)), $this->LE);
$mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE);
if($disposition == 'inline') {
$mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE);
}
- $mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s", $disposition, $name, $this->LE.$this->LE);
+ $mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s", $disposition, $this->EncodeHeader($this->SecureHeader($name)), $this->LE.$this->LE);
/* Encode as string attachment */
if($bString) {
} // end of for
$output .= $newline.$eol;
} // end of while
- return trim($output);
+ return $output;
}
/**
$ext = $fileParts[1];
$mimeType = $this->_mime_types($ext);
if ( strlen($basedir) > 1 && substr($basedir,-1) != '/') { $basedir .= '/'; }
- if ( strlen($directory) > 1 && substr($basedir,-1) != '/') { $directory .= '/'; }
- $this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64', $mimeType);
+ if ( strlen($directory) > 1 && substr($directory,-1) != '/') { $directory .= '/'; }
if ( $this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64',$mimeType) ) {
$message = preg_replace("/".$images[1][$i]."=\"".preg_quote($url, '/')."\"/Ui", $images[1][$i]."=\"".$cid."\"", $message);
}
$this->Body = $message;
$textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s','',$message)));
if ( !empty($textMsg) && empty($this->AltBody) ) {
- $this->AltBody = $textMsg;
+ $this->AltBody = html_entity_decode($textMsg);
}
if ( empty($this->AltBody) ) {
$this->AltBody = 'To view this email message, open the email in with HTML compatibility!' . "\n\n";
*/
function _mime_types($ext = '') {
$mimes = array(
- 'hqx' => 'application/mac-binhex40',
- 'cpt' => 'application/mac-compactpro',
- 'doc' => 'application/msword',
+ 'ai' => 'application/postscript',
+ 'aif' => 'audio/x-aiff',
+ 'aifc' => 'audio/x-aiff',
+ 'aiff' => 'audio/x-aiff',
+ 'avi' => 'video/x-msvideo',
'bin' => 'application/macbinary',
- 'dms' => 'application/octet-stream',
- 'lha' => 'application/octet-stream',
- 'lzh' => 'application/octet-stream',
- 'exe' => 'application/octet-stream',
+ 'bmp' => 'image/bmp',
'class' => 'application/octet-stream',
- 'psd' => 'application/octet-stream',
- 'so' => 'application/octet-stream',
- 'sea' => 'application/octet-stream',
- 'dll' => 'application/octet-stream',
- 'oda' => 'application/oda',
- 'pdf' => 'application/pdf',
- 'ai' => 'application/postscript',
- 'eps' => 'application/postscript',
- 'ps' => 'application/postscript',
- 'smi' => 'application/smil',
- 'smil' => 'application/smil',
- 'mif' => 'application/vnd.mif',
- 'xls' => 'application/vnd.ms-excel',
- 'ppt' => 'application/vnd.ms-powerpoint',
- 'wbxml' => 'application/vnd.wap.wbxml',
- 'wmlc' => 'application/vnd.wap.wmlc',
+ 'cpt' => 'application/mac-compactpro',
+ 'css' => 'text/css',
'dcr' => 'application/x-director',
'dir' => 'application/x-director',
- 'dxr' => 'application/x-director',
+ 'dll' => 'application/octet-stream',
+ 'dms' => 'application/octet-stream',
+ 'doc' => 'application/msword',
'dvi' => 'application/x-dvi',
+ 'dxr' => 'application/x-director',
+ 'eml' => 'message/rfc822',
+ 'eps' => 'application/postscript',
+ 'exe' => 'application/octet-stream',
+ 'gif' => 'image/gif',
'gtar' => 'application/x-gtar',
- 'php' => 'application/x-httpd-php',
- 'php4' => 'application/x-httpd-php',
- 'php3' => 'application/x-httpd-php',
- 'phtml' => 'application/x-httpd-php',
- 'phps' => 'application/x-httpd-php-source',
+ 'htm' => 'text/html',
+ 'html' => 'text/html',
+ 'jpe' => 'image/jpeg',
+ 'jpeg' => 'image/jpeg',
+ 'jpg' => 'image/jpeg',
+ 'hqx' => 'application/mac-binhex40',
'js' => 'application/x-javascript',
- 'swf' => 'application/x-shockwave-flash',
- 'sit' => 'application/x-stuffit',
- 'tar' => 'application/x-tar',
- 'tgz' => 'application/x-tar',
- 'xhtml' => 'application/xhtml+xml',
- 'xht' => 'application/xhtml+xml',
- 'zip' => 'application/zip',
+ 'lha' => 'application/octet-stream',
+ 'log' => 'text/plain',
+ 'lzh' => 'application/octet-stream',
'mid' => 'audio/midi',
'midi' => 'audio/midi',
- 'mpga' => 'audio/mpeg',
+ 'mif' => 'application/vnd.mif',
+ 'mov' => 'video/quicktime',
+ 'movie' => 'video/x-sgi-movie',
'mp2' => 'audio/mpeg',
'mp3' => 'audio/mpeg',
- 'aif' => 'audio/x-aiff',
- 'aiff' => 'audio/x-aiff',
- 'aifc' => 'audio/x-aiff',
+ 'mpe' => 'video/mpeg',
+ 'mpeg' => 'video/mpeg',
+ 'mpg' => 'video/mpeg',
+ 'mpga' => 'audio/mpeg',
+ 'oda' => 'application/oda',
+ 'pdf' => 'application/pdf',
+ 'php' => 'application/x-httpd-php',
+ 'php3' => 'application/x-httpd-php',
+ 'php4' => 'application/x-httpd-php',
+ 'phps' => 'application/x-httpd-php-source',
+ 'phtml' => 'application/x-httpd-php',
+ 'png' => 'image/png',
+ 'ppt' => 'application/vnd.ms-powerpoint',
+ 'ps' => 'application/postscript',
+ 'psd' => 'application/octet-stream',
+ 'qt' => 'video/quicktime',
+ 'ra' => 'audio/x-realaudio',
'ram' => 'audio/x-pn-realaudio',
'rm' => 'audio/x-pn-realaudio',
'rpm' => 'audio/x-pn-realaudio-plugin',
- 'ra' => 'audio/x-realaudio',
+ 'rtf' => 'text/rtf',
+ 'rtx' => 'text/richtext',
'rv' => 'video/vnd.rn-realvideo',
- 'wav' => 'audio/x-wav',
- 'bmp' => 'image/bmp',
- 'gif' => 'image/gif',
- 'jpeg' => 'image/jpeg',
- 'jpg' => 'image/jpeg',
- 'jpe' => 'image/jpeg',
- 'png' => 'image/png',
- 'tiff' => 'image/tiff',
- 'tif' => 'image/tiff',
- 'css' => 'text/css',
- 'html' => 'text/html',
- 'htm' => 'text/html',
+ 'sea' => 'application/octet-stream',
'shtml' => 'text/html',
- 'txt' => 'text/plain',
+ 'sit' => 'application/x-stuffit',
+ 'so' => 'application/octet-stream',
+ 'smi' => 'application/smil',
+ 'smil' => 'application/smil',
+ 'swf' => 'application/x-shockwave-flash',
+ 'tar' => 'application/x-tar',
'text' => 'text/plain',
- 'log' => 'text/plain',
- 'rtx' => 'text/richtext',
- 'rtf' => 'text/rtf',
- 'xml' => 'text/xml',
- 'xsl' => 'text/xml',
- 'mpeg' => 'video/mpeg',
- 'mpg' => 'video/mpeg',
- 'mpe' => 'video/mpeg',
- 'qt' => 'video/quicktime',
- 'mov' => 'video/quicktime',
- 'avi' => 'video/x-msvideo',
- 'movie' => 'video/x-sgi-movie',
- 'doc' => 'application/msword',
+ 'txt' => 'text/plain',
+ 'tgz' => 'application/x-tar',
+ 'tif' => 'image/tiff',
+ 'tiff' => 'image/tiff',
+ 'wav' => 'audio/x-wav',
+ 'wbxml' => 'application/vnd.wap.wbxml',
+ 'wmlc' => 'application/vnd.wap.wmlc',
'word' => 'application/msword',
+ 'xht' => 'application/xhtml+xml',
+ 'xhtml' => 'application/xhtml+xml',
'xl' => 'application/excel',
- 'eml' => 'message/rfc822'
+ 'xls' => 'application/vnd.ms-excel',
+ 'xml' => 'text/xml',
+ 'xsl' => 'text/xml',
+ 'zip' => 'application/zip'
);
return ( ! isset($mimes[strtolower($ext)])) ? 'application/octet-stream' : $mimes[strtolower($ext)];
}
* @param string $key_filename Parameter File Name
* @param string $key_pass Password for private key
*/
- function Sign($key_filename, $key_pass) {
+ function Sign($cert_filename, $key_filename, $key_pass) {
+ $this->sign_cert_file = $cert_filename;
$this->sign_key_file = $key_filename;
$this->sign_key_pass = $key_pass;
}
}
-?>
+?>
\ No newline at end of file