]> git.mxchange.org Git - mailer.git/blobdiff - inc/phpmailer/class.phpmailer.php
Code style changed, ext-user continued:
[mailer.git] / inc / phpmailer / class.phpmailer.php
index 2ddc30fd27af80fa5e445e440ab9a4f792b6338f..effe75ed44b102d330cb6d930204a75e77f7dabe 100644 (file)
@@ -2,7 +2,7 @@
 /*~ 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/                     |
@@ -28,7 +28,7 @@
  * PHPMailer - PHP email transport class
  * @package PHPMailer
  * @author Andy Prevost
- * @copyright 2004 - 2008 Andy Prevost
+ * @copyright 2004 - 2009 Andy Prevost
  */
 
 class PHPMailer {
@@ -95,7 +95,7 @@ class PHPMailer {
 
   /**
    * Sets the Body of the message.  This can be either an HTML or text body.
-   * If HTML then run IsHTML(true).
+   * If HTML then run IsHTML(TRUE).
    * @var string
    */
   var $Body              = '';
@@ -139,7 +139,7 @@ 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.
@@ -199,7 +199,7 @@ class PHPMailer {
    * Sets SMTP authentication. Utilizes the Username and Password variables.
    * @var bool
    */
-  var $SMTPAuth     = false;
+  var $SMTPAuth     = FALSE;
 
   /**
    * Sets SMTP username.
@@ -224,7 +224,7 @@ class PHPMailer {
    * Sets SMTP class debugging on or off.
    * @var bool
    */
-  var $SMTPDebug    = false;
+  var $SMTPDebug    = FALSE;
 
   /**
    * Prevents the SMTP connection from being closed after each mail
@@ -232,14 +232,14 @@ class PHPMailer {
    * requires an explicit call to SmtpClose().
    * @var bool
    */
-  var $SMTPKeepAlive = false;
+  var $SMTPKeepAlive = FALSE;
 
   /**
    * Provides the ability to have the TO field process individual
    * emails, instead of sending to entire TO addresses
    * @var bool
    */
-  var $SingleTo = false;
+  var $SingleTo = FALSE;
 
   /////////////////////////////////////////////////
   // PROPERTIES, PRIVATE
@@ -257,6 +257,7 @@ class PHPMailer {
   var $language        = array();
   var $error_count     = 0;
   var $LE              = "\n";
+  var $sign_cert_file  = "";
   var $sign_key_file   = "";
   var $sign_key_pass   = "";
 
@@ -270,7 +271,7 @@ class PHPMailer {
    * @return void
    */
   function IsHTML($bool) {
-    if($bool == true) {
+    if($bool == TRUE) {
       $this->ContentType = 'text/html';
     } else {
       $this->ContentType = 'text/plain';
@@ -379,11 +380,11 @@ class PHPMailer {
   function Send() {
     $header = '';
     $body = '';
-    $result = true;
+    $result = TRUE;
 
     if((count($this->to) + count($this->cc) + count($this->bcc)) < 1) {
       $this->SetError($this->Lang('provide_address'));
-      return false;
+      return FALSE;
     }
 
     /* Set whether the message is multipart/alternative */
@@ -397,7 +398,7 @@ class PHPMailer {
     $body = $this->CreateBody();
 
     if($body == '') {
-      return false;
+      return FALSE;
     }
 
     /* Choose the mailer */
@@ -415,7 +416,7 @@ class PHPMailer {
         $result = $this->MailSend($header, $body);
         break;
         //$this->SetError($this->Mailer . $this->Lang('mailer_not_supported'));
-        //$result = false;
+        //$result = FALSE;
         //break;
     }
 
@@ -436,7 +437,7 @@ class PHPMailer {
 
     if(!@$mail = popen($sendmail, 'w')) {
       $this->SetError($this->Lang('execute') . $this->Sendmail);
-      return false;
+      return FALSE;
     }
 
     fputs($mail, $header);
@@ -448,9 +449,9 @@ class PHPMailer {
     }
     if($result != 0) {
       $this->SetError($this->Lang('execute') . $this->Sendmail);
-      return false;
+      return FALSE;
     }
-    return true;
+    return TRUE;
   }
 
   /**
@@ -472,7 +473,7 @@ class PHPMailer {
     if ($this->Sender != '' && strlen(ini_get('safe_mode')) < 1) {
       $old_from = ini_get('sendmail_from');
       ini_set('sendmail_from', $this->Sender);
-      if ($this->SingleTo === true && count($toArr) > 1) {
+      if ($this->SingleTo === TRUE && count($toArr) > 1) {
         foreach ($toArr as $key => $val) {
           $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
         }
@@ -480,7 +481,7 @@ class PHPMailer {
         $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
       }
     } else {
-      if ($this->SingleTo === true && count($toArr) > 1) {
+      if ($this->SingleTo === TRUE && count($toArr) > 1) {
         foreach ($toArr as $key => $val) {
           $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
         }
@@ -495,10 +496,10 @@ class PHPMailer {
 
     if(!$rt) {
       $this->SetError($this->Lang('instantiate'));
-      return false;
+      return FALSE;
     }
 
-    return true;
+    return TRUE;
   }
 
   /**
@@ -514,7 +515,7 @@ class PHPMailer {
     $bad_rcpt = array();
 
     if(!$this->SmtpConnect()) {
-      return false;
+      return FALSE;
     }
 
     $smtp_from = ($this->Sender == '') ? $this->From : $this->Sender;
@@ -522,7 +523,7 @@ class PHPMailer {
       $error = $this->Lang('from_failed') . $smtp_from;
       $this->SetError($error);
       $this->smtp->Reset();
-      return false;
+      return FALSE;
     }
 
     /* Attempt to send attach all recipients */
@@ -552,21 +553,21 @@ class PHPMailer {
       $error = $this->Lang('recipients_failed') . $error;
       $this->SetError($error);
       $this->smtp->Reset();
-      return false;
+      return FALSE;
     }
 
     if(!$this->smtp->Data($header . $body)) {
       $this->SetError($this->Lang('data_not_accepted'));
       $this->smtp->Reset();
-      return false;
+      return FALSE;
     }
-    if($this->SMTPKeepAlive == true) {
+    if($this->SMTPKeepAlive == TRUE) {
       $this->smtp->Reset();
     } else {
       $this->SmtpClose();
     }
 
-    return true;
+    return TRUE;
   }
 
   /**
@@ -586,7 +587,7 @@ class PHPMailer {
     $connection = ($this->smtp->Connected());
 
     /* Retry while there is no connection */
-    while($index < count($hosts) && $connection == false) {
+    while($index < count($hosts) && $connection == FALSE) {
       $hostinfo = array();
       if(eregi('^(.+):([0-9]+)$', $hosts[$index], $hostinfo)) {
         $host = $hostinfo[1];
@@ -603,12 +604,12 @@ class PHPMailer {
           $this->smtp->Hello($this->ServerHostname());
         }
 
-        $connection = true;
+        $connection = TRUE;
         if($this->SMTPAuth) {
           if(!$this->smtp->Authenticate($this->Username, $this->Password)) {
             $this->SetError($this->Lang('authenticate'));
             $this->smtp->Reset();
-            $connection = false;
+            $connection = FALSE;
           }
         }
       }
@@ -649,12 +650,24 @@ class PHPMailer {
     } 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;
 
-    return true;
+    return TRUE;
   }
 
   /////////////////////////////////////////////////
@@ -701,7 +714,7 @@ class PHPMailer {
    * @access private
    * @return string
    */
-  function WrapText($message, $length, $qp_mode = false) {
+  function WrapText($message, $length, $qp_mode = FALSE) {
     $soft_break = ($qp_mode) ? sprintf(" =%s", $this->LE) : $this->LE;
     // If utf-8 encoding is used, we will need to make sure we don't
     // split multibyte characters when we wrap
@@ -784,12 +797,12 @@ class PHPMailer {
    * @return int
    */
   function UTF8CharBoundary($encodedText, $maxLength) {
-    $foundSplitPos = false;
+    $foundSplitPos = FALSE;
     $lookBack = 3;
     while (!$foundSplitPos) {
       $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack);
       $encodedCharPos = strpos($lastChunk, "=");
-      if ($encodedCharPos !== false) {
+      if ($encodedCharPos !== FALSE) {
         // Found start of encoded character byte within $lookBack block.
         // Check the encoded byte value (the 2 chars after the '=')
         $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2);
@@ -799,17 +812,17 @@ class PHPMailer {
           // otherwise reduce maxLength to start of the encoded char
           $maxLength = ($encodedCharPos == 0) ? $maxLength :
           $maxLength - ($lookBack - $encodedCharPos);
-          $foundSplitPos = true;
+          $foundSplitPos = TRUE;
         } elseif ($dec >= 192) { // First byte of a multi byte character
           // Reduce maxLength to split at start of character
           $maxLength = $maxLength - ($lookBack - $encodedCharPos);
-          $foundSplitPos = true;
+          $foundSplitPos = TRUE;
         } elseif ($dec < 192) { // Middle byte of a multi byte character, look further back
           $lookBack += 3;
         }
       } else {
         // No encoded character found
-        $foundSplitPos = true;
+        $foundSplitPos = TRUE;
       }
     }
     return $maxLength;
@@ -864,9 +877,6 @@ class PHPMailer {
       } elseif (count($this->cc) == 0) {
         $result .= $this->HeaderLine('To', 'undisclosed-recipients:;');
       }
-      if(count($this->cc) > 0) {
-        $result .= $this->AddrAppend('Cc', $this->cc);
-      }
     }
 
     $from = array();
@@ -1007,9 +1017,13 @@ class PHPMailer {
       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());
@@ -1110,7 +1124,7 @@ class PHPMailer {
   function AddAttachment($path, $name = '', $encoding = 'base64', $type = 'application/octet-stream') {
     if(!@is_file($path)) {
       $this->SetError($this->Lang('file_access') . $path);
-      return false;
+      return FALSE;
     }
 
     $filename = basename($path);
@@ -1124,11 +1138,11 @@ class PHPMailer {
     $this->attachment[$cur][2] = $name;
     $this->attachment[$cur][3] = $encoding;
     $this->attachment[$cur][4] = $type;
-    $this->attachment[$cur][5] = false; // isStringAttachment
+    $this->attachment[$cur][5] = FALSE; // isStringAttachment
     $this->attachment[$cur][6] = 'attachment';
     $this->attachment[$cur][7] = 0;
 
-    return true;
+    return TRUE;
   }
 
   /**
@@ -1159,14 +1173,14 @@ class PHPMailer {
       $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) {
@@ -1292,7 +1306,7 @@ class PHPMailer {
     } else {
       $encoding = 'Q';
       $encoded = $this->EncodeQ($str, $position);
-      $encoded = $this->WrapText($encoded, $maxlen, true);
+      $encoded = $this->WrapText($encoded, $maxlen, TRUE);
       $encoded = str_replace('='.$this->LE, "\n", trim($encoded));
     }
 
@@ -1361,7 +1375,7 @@ class PHPMailer {
    * @access private
    * @return string
    */
-  function EncodeQP( $input = '', $line_max = 76, $space_conv = false ) {
+  function EncodeQP( $input = '', $line_max = 76, $space_conv = FALSE ) {
     $hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
     $lines = preg_split('/(?:\r\n|\r|\n)/', $input);
     $eol = "\r\n";
@@ -1399,7 +1413,7 @@ class PHPMailer {
       } // end of for
       $output .= $newline.$eol;
     } // end of while
-    return trim($output);
+    return $output;
   }
 
   /**
@@ -1449,7 +1463,7 @@ class PHPMailer {
     $this->attachment[$cur][2] = $filename;
     $this->attachment[$cur][3] = $encoding;
     $this->attachment[$cur][4] = $type;
-    $this->attachment[$cur][5] = true; // isString
+    $this->attachment[$cur][5] = TRUE; // isString
     $this->attachment[$cur][6] = 'attachment';
     $this->attachment[$cur][7] = 0;
   }
@@ -1471,7 +1485,7 @@ class PHPMailer {
 
     if(!@is_file($path)) {
       $this->SetError($this->Lang('file_access') . $path);
-      return false;
+      return FALSE;
     }
 
     $filename = basename($path);
@@ -1486,11 +1500,11 @@ class PHPMailer {
     $this->attachment[$cur][2] = $name;
     $this->attachment[$cur][3] = $encoding;
     $this->attachment[$cur][4] = $type;
-    $this->attachment[$cur][5] = false;
+    $this->attachment[$cur][5] = FALSE;
     $this->attachment[$cur][6] = 'inline';
     $this->attachment[$cur][7] = $cid;
 
-    return true;
+    return TRUE;
   }
 
   /**
@@ -1499,10 +1513,10 @@ class PHPMailer {
    * @return bool
    */
   function InlineImageExists() {
-    $result = false;
+    $result = FALSE;
     for($i = 0; $i < count($this->attachment); $i++) {
       if($this->attachment[$i][6] == 'inline') {
-        $result = true;
+        $result = TRUE;
         break;
       }
     }
@@ -1710,19 +1724,18 @@ class PHPMailer {
           $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->IsHTML(true);
+    $this->IsHTML(TRUE);
     $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";
@@ -1736,93 +1749,92 @@ class PHPMailer {
    */
   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)];
   }
@@ -1843,7 +1855,7 @@ class PHPMailer {
       $this->$name = $value;
     } else {
       $this->SetError('Cannot set or reset variable ' . $name);
-      return false;
+      return FALSE;
     }
   }
 
@@ -1862,7 +1874,7 @@ class PHPMailer {
       fclose($fp);
       return $return;
     } else {
-      return false;
+      return FALSE;
     }
   }
 
@@ -1886,11 +1898,12 @@ class PHPMailer {
    * @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