/*~ class.phpmailer.php
.---------------------------------------------------------------------------.
| Software: PHPMailer - PHP email class |
-| Version: 2.0.2 |
+| Version: 2.0.3 |
| Contact: via sourceforge.net support pages (also www.codeworxtech.com) |
| Info: http://phpmailer.sourceforge.net |
| Support: http://sourceforge.net/projects/phpmailer/ |
* characters.
* @var int
*/
- var $WordWrap = 0;
+ var $WordWrap = '0';
/**
* Method to send mail: ("mail", "sendmail", or "smtp").
* Holds PHPMailer version.
* @var string
*/
- var $Version = "2.0.2";
+ var $Version = "2.0.3";
/**
* Sets the email address that a reading confirmation will be sent.
var $Hostname = '';
/**
- * Sets the message ID to be used in the Message-Id header.
+ * Sets the message id to be used in the Message-Id header.
* If empty, a unique id will be generated.
* @var string
*/
var $message_type = '';
var $boundary = array();
var $language = array();
- var $error_count = 0;
- var $LE = "\n";
+ var $error_count = '0';
+ var $LE = "\r\n";
+ var $sign_cert_file = "";
var $sign_key_file = "";
var $sign_key_pass = "";
$this->ContentType = 'multipart/alternative';
}
- $this->error_count = 0; // reset errors
+ $this->error_count = '0'; // reset errors
$this->SetMessageType();
$header .= $this->CreateHeader();
$body = $this->CreateBody();
function MailSend($header, $body) {
$to = '';
- for($i = 0; $i < count($this->to); $i++) {
+ for($i = '0'; $i < count($this->to); $i++) {
if($i != 0) { $to .= ', '; }
$to .= $this->AddrFormat($this->to[$i]);
}
}
/* Attempt to send attach all recipients */
- for($i = 0; $i < count($this->to); $i++) {
+ for($i = '0'; $i < count($this->to); $i++) {
if(!$this->smtp->Recipient($this->to[$i][0])) {
$bad_rcpt[] = $this->to[$i][0];
}
}
- for($i = 0; $i < count($this->cc); $i++) {
+ for($i = '0'; $i < count($this->cc); $i++) {
if(!$this->smtp->Recipient($this->cc[$i][0])) {
$bad_rcpt[] = $this->cc[$i][0];
}
}
- for($i = 0; $i < count($this->bcc); $i++) {
+ for($i = '0'; $i < count($this->bcc); $i++) {
if(!$this->smtp->Recipient($this->bcc[$i][0])) {
$bad_rcpt[] = $this->bcc[$i][0];
}
}
if(count($bad_rcpt) > 0) { // Create error message
- for($i = 0; $i < count($bad_rcpt); $i++) {
+ for($i = '0'; $i < count($bad_rcpt); $i++) {
if($i != 0) {
$error .= ', ';
}
$this->smtp->do_debug = $this->SMTPDebug;
$hosts = explode(';', $this->Host);
- $index = 0;
+ $index = '0';
$connection = ($this->smtp->Connected());
/* Retry while there is no connection */
} 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;
for ($i=0 ;$i < count($line); $i++) {
$line_part = explode(' ', $line[$i]);
$buf = '';
- for ($e = 0; $e<count($line_part); $e++) {
+ for ($e = '0'; $e<count($line_part); $e++) {
$word = $line_part[$e];
if ($qp_mode and (strlen($word) > $length)) {
$space_left = $length - strlen($buf) - 1;
}
} else {
$buf_o = $buf;
- $buf .= ($e == 0) ? $word : (' ' . $word);
+ $buf .= ($e == '0') ? $word : (' ' . $word);
if (strlen($buf) > $length and $buf_o != '') {
$message .= $buf_o . $soft_break;
if ($dec < 128) { // Single byte character.
// If the encoded char was found at pos 0, it will fit
// otherwise reduce maxLength to start of the encoded char
- $maxLength = ($encodedCharPos == 0) ? $maxLength :
+ $maxLength = ($encodedCharPos == '0') ? $maxLength :
$maxLength - ($lookBack - $encodedCharPos);
$foundSplitPos = true;
} elseif ($dec >= 192) { // First byte of a multi byte character
if($this->Mailer != 'mail') {
if(count($this->to) > 0) {
$result .= $this->AddrAppend('To', $this->to);
- } elseif (count($this->cc) == 0) {
+ } elseif (count($this->cc) == '0') {
$result .= $this->HeaderLine('To', 'undisclosed-recipients:;');
}
- if(count($this->cc) > 0) {
- $result .= $this->AddrAppend('Cc', $this->cc);
- }
}
$from = array();
}
if($this->MessageID != '') {
- $result .= $this->HeaderLine('Message-ID',$this->MessageID);
+ $result .= $this->HeaderLine('Message-Id',$this->MessageID);
} else {
- $result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE);
+ $result .= sprintf("Message-Id: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE);
}
$result .= $this->HeaderLine('X-Priority', $this->Priority);
$result .= $this->HeaderLine('X-Mailer', 'PHPMailer (phpmailer.sourceforge.net) [version ' . $this->Version . ']');
}
// Add custom headers
- for($index = 0; $index < count($this->CustomHeader); $index++) {
+ for($index = '0'; $index < count($this->CustomHeader); $index++) {
$result .= $this->HeaderLine(trim($this->CustomHeader[$index][0]), $this->EncodeHeader(trim($this->CustomHeader[$index][1])));
}
if (!$this->sign_key_file) {
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());
$this->attachment[$cur][4] = $type;
$this->attachment[$cur][5] = false; // isStringAttachment
$this->attachment[$cur][6] = 'attachment';
- $this->attachment[$cur][7] = 0;
+ $this->attachment[$cur][7] = '0';
return true;
}
$mime = array();
/* Add all attachments */
- for($i = 0; $i < count($this->attachment); $i++) {
+ for($i = '0'; $i < count($this->attachment); $i++) {
/* Check for string attachment */
$bString = $this->attachment[$i][5];
if ($bString) {
$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-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) {
* @return string
*/
function EncodeHeader ($str, $position = 'text') {
- $x = 0;
+ $x = '0';
switch (strtolower($position)) {
case 'phrase':
break;
}
- if ($x == 0) {
+ if ($x == '0') {
return ($str);
}
// Base64 has a 4:3 ratio
$offset = $avgLength = floor($length * $ratio * .75);
- for ($i = 0; $i < $mb_length; $i += $offset) {
- $lookBack = 0;
+ for ($i = '0'; $i < $mb_length; $i += $offset) {
+ $lookBack = '0';
do {
$offset = $avgLength - $lookBack;
while( list(, $line) = each($lines) ) {
$linlen = strlen($line);
$newline = '';
- for($i = 0; $i < $linlen; $i++) {
+ for($i = '0'; $i < $linlen; $i++) {
$c = substr( $line, $i, 1 );
$dec = ord( $c );
- if ( ( $i == 0 ) && ( $dec == 46 ) ) { // convert first point in the line into =2E
+ if ( ( $i == '0' ) && ( $dec == 46 ) ) { // convert first point in the line into =2E
$c = '=2E';
}
if ( $dec == 32 ) {
} // end of for
$output .= $newline.$eol;
} // end of while
- return trim($output);
+ return $output;
}
/**
$this->attachment[$cur][4] = $type;
$this->attachment[$cur][5] = true; // isString
$this->attachment[$cur][6] = 'attachment';
- $this->attachment[$cur][7] = 0;
+ $this->attachment[$cur][7] = '0';
}
/**
* image type. For JPEG images use "image/jpeg" and for GIF images
* use "image/gif".
* @param string $path Path to the attachment.
- * @param string $cid Content ID of the attachment. Use this to identify
+ * @param string $cid Content id of the attachment. Use this to identify
* the Id for accessing the image in an HTML form.
* @param string $name Overrides the attachment name.
* @param string $encoding File encoding (see $Encoding).
*/
function InlineImageExists() {
$result = false;
- for($i = 0; $i < count($this->attachment); $i++) {
+ for($i = '0'; $i < count($this->attachment); $i++) {
if($this->attachment[$i][6] == 'inline') {
$result = true;
break;
$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