Update PHPMailer to 2.0.4. Props hakre. fixes #9697

git-svn-id: http://svn.automattic.com/wordpress/trunk@11341 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2009-05-15 17:32:35 +00:00
parent 886c680a5d
commit f47c8c729c
2 changed files with 102 additions and 89 deletions

View File

@ -2,7 +2,7 @@
/*~ class.phpmailer.php /*~ class.phpmailer.php
.---------------------------------------------------------------------------. .---------------------------------------------------------------------------.
| Software: PHPMailer - PHP email class | | Software: PHPMailer - PHP email class |
| Version: 2.0.2 | | Version: 2.0.4 |
| Contact: via sourceforge.net support pages (also www.codeworxtech.com) | | Contact: via sourceforge.net support pages (also www.codeworxtech.com) |
| Info: http://phpmailer.sourceforge.net | | Info: http://phpmailer.sourceforge.net |
| Support: http://sourceforge.net/projects/phpmailer/ | | Support: http://sourceforge.net/projects/phpmailer/ |
@ -28,7 +28,7 @@
* PHPMailer - PHP email transport class * PHPMailer - PHP email transport class
* @package PHPMailer * @package PHPMailer
* @author Andy Prevost * @author Andy Prevost
* @copyright 2004 - 2008 Andy Prevost * @copyright 2004 - 2009 Andy Prevost
*/ */
class PHPMailer { class PHPMailer {
@ -139,7 +139,7 @@ class PHPMailer {
* Holds PHPMailer version. * Holds PHPMailer version.
* @var string * @var string
*/ */
var $Version = "2.0.2"; var $Version = "2.0.4";
/** /**
* Sets the email address that a reading confirmation will be sent. * Sets the email address that a reading confirmation will be sent.
@ -257,6 +257,7 @@ class PHPMailer {
var $language = array(); var $language = array();
var $error_count = 0; var $error_count = 0;
var $LE = "\n"; var $LE = "\n";
var $sign_cert_file = "";
var $sign_key_file = ""; var $sign_key_file = "";
var $sign_key_pass = ""; var $sign_key_pass = "";
@ -649,8 +650,20 @@ class PHPMailer {
} elseif (file_exists($lang_path.'phpmailer.lang-en.php')) { } elseif (file_exists($lang_path.'phpmailer.lang-en.php')) {
include($lang_path.'phpmailer.lang-en.php'); include($lang_path.'phpmailer.lang-en.php');
} else { } else {
$this->SetError('Could not load language file'); $PHPMAILER_LANG = array();
return false; $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; $this->language = $PHPMAILER_LANG;
@ -864,9 +877,6 @@ class PHPMailer {
} elseif (count($this->cc) == 0) { } elseif (count($this->cc) == 0) {
$result .= $this->HeaderLine('To', 'undisclosed-recipients:;'); $result .= $this->HeaderLine('To', 'undisclosed-recipients:;');
} }
if(count($this->cc) > 0) {
$result .= $this->AddrAppend('Cc', $this->cc);
}
} }
$from = array(); $from = array();
@ -1007,9 +1017,13 @@ class PHPMailer {
fclose($fp); fclose($fp);
$signed = tempnam("", "signed"); $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"); $fp = fopen($signed, "r");
$result = fread($fp, filesize($this->sign_key_file)); $result = fread($fp, filesize($this->sign_key_file));
$result = '';
while(!feof($fp)){
$result = $result . fread($fp, 1024);
}
fclose($fp); fclose($fp);
} else { } else {
$this->SetError($this->Lang("signing").openssl_error_string()); $this->SetError($this->Lang("signing").openssl_error_string());
@ -1159,14 +1173,14 @@ class PHPMailer {
$cid = $this->attachment[$i][7]; $cid = $this->attachment[$i][7];
$mime[] = sprintf("--%s%s", $this->boundary[1], $this->LE); $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); $mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE);
if($disposition == 'inline') { 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 */ /* Encode as string attachment */
if($bString) { if($bString) {
@ -1399,7 +1413,7 @@ class PHPMailer {
} // end of for } // end of for
$output .= $newline.$eol; $output .= $newline.$eol;
} // end of while } // end of while
return trim($output); return $output;
} }
/** /**
@ -1408,7 +1422,7 @@ class PHPMailer {
* @return string * @return string
*/ */
function EncodeQ_callback ($matches) { function EncodeQ_callback ($matches) {
return "=".sprintf("%02X", ord($matches[1])); return sprintf('=%02X', ord($matches[1]));
} }
/** /**
@ -1722,8 +1736,7 @@ class PHPMailer {
$ext = $fileParts[1]; $ext = $fileParts[1];
$mimeType = $this->_mime_types($ext); $mimeType = $this->_mime_types($ext);
if ( strlen($basedir) > 1 && substr($basedir,-1) != '/') { $basedir .= '/'; } if ( strlen($basedir) > 1 && substr($basedir,-1) != '/') { $basedir .= '/'; }
if ( strlen($directory) > 1 && substr($basedir,-1) != '/') { $directory .= '/'; } if ( strlen($directory) > 1 && substr($directory,-1) != '/') { $directory .= '/'; }
$this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64', $mimeType);
if ( $this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64',$mimeType) ) { 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); $message = preg_replace("/".$images[1][$i]."=\"".preg_quote($url, '/')."\"/Ui", $images[1][$i]."=\"".$cid."\"", $message);
} }
@ -1734,7 +1747,7 @@ class PHPMailer {
$this->Body = $message; $this->Body = $message;
$textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s','',$message))); $textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s','',$message)));
if ( !empty($textMsg) && empty($this->AltBody) ) { if ( !empty($textMsg) && empty($this->AltBody) ) {
$this->AltBody = $textMsg; $this->AltBody = html_entity_decode($textMsg);
} }
if ( empty($this->AltBody) ) { if ( empty($this->AltBody) ) {
$this->AltBody = 'To view this email message, open the email in with HTML compatibility!' . "\n\n"; $this->AltBody = 'To view this email message, open the email in with HTML compatibility!' . "\n\n";
@ -1748,93 +1761,92 @@ class PHPMailer {
*/ */
function _mime_types($ext = '') { function _mime_types($ext = '') {
$mimes = array( $mimes = array(
'hqx' => 'application/mac-binhex40',
'cpt' => 'application/mac-compactpro',
'doc' => 'application/msword',
'bin' => 'application/macbinary',
'dms' => 'application/octet-stream',
'lha' => 'application/octet-stream',
'lzh' => 'application/octet-stream',
'exe' => 'application/octet-stream',
'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', 'ai' => 'application/postscript',
'eps' => 'application/postscript', 'aif' => 'audio/x-aiff',
'ps' => 'application/postscript', 'aifc' => 'audio/x-aiff',
'smi' => 'application/smil', 'aiff' => 'audio/x-aiff',
'smil' => 'application/smil', 'avi' => 'video/x-msvideo',
'mif' => 'application/vnd.mif', 'bin' => 'application/macbinary',
'xls' => 'application/vnd.ms-excel', 'bmp' => 'image/bmp',
'ppt' => 'application/vnd.ms-powerpoint', 'class' => 'application/octet-stream',
'wbxml' => 'application/vnd.wap.wbxml', 'cpt' => 'application/mac-compactpro',
'wmlc' => 'application/vnd.wap.wmlc', 'css' => 'text/css',
'dcr' => 'application/x-director', 'dcr' => 'application/x-director',
'dir' => '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', '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', 'gtar' => 'application/x-gtar',
'php' => 'application/x-httpd-php', 'htm' => 'text/html',
'php4' => 'application/x-httpd-php', 'html' => 'text/html',
'php3' => 'application/x-httpd-php', 'jpe' => 'image/jpeg',
'phtml' => 'application/x-httpd-php', 'jpeg' => 'image/jpeg',
'phps' => 'application/x-httpd-php-source', 'jpg' => 'image/jpeg',
'hqx' => 'application/mac-binhex40',
'js' => 'application/x-javascript', 'js' => 'application/x-javascript',
'swf' => 'application/x-shockwave-flash', 'lha' => 'application/octet-stream',
'sit' => 'application/x-stuffit', 'log' => 'text/plain',
'tar' => 'application/x-tar', 'lzh' => 'application/octet-stream',
'tgz' => 'application/x-tar',
'xhtml' => 'application/xhtml+xml',
'xht' => 'application/xhtml+xml',
'zip' => 'application/zip',
'mid' => 'audio/midi', 'mid' => 'audio/midi',
'midi' => 'audio/midi', 'midi' => 'audio/midi',
'mpga' => 'audio/mpeg', 'mif' => 'application/vnd.mif',
'mov' => 'video/quicktime',
'movie' => 'video/x-sgi-movie',
'mp2' => 'audio/mpeg', 'mp2' => 'audio/mpeg',
'mp3' => 'audio/mpeg', 'mp3' => 'audio/mpeg',
'aif' => 'audio/x-aiff', 'mpe' => 'video/mpeg',
'aiff' => 'audio/x-aiff', 'mpeg' => 'video/mpeg',
'aifc' => 'audio/x-aiff', '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', 'ram' => 'audio/x-pn-realaudio',
'rm' => 'audio/x-pn-realaudio', 'rm' => 'audio/x-pn-realaudio',
'rpm' => 'audio/x-pn-realaudio-plugin', 'rpm' => 'audio/x-pn-realaudio-plugin',
'ra' => 'audio/x-realaudio',
'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',
'shtml' => 'text/html',
'txt' => 'text/plain',
'text' => 'text/plain',
'log' => 'text/plain',
'rtx' => 'text/richtext',
'rtf' => 'text/rtf', 'rtf' => 'text/rtf',
'rtx' => 'text/richtext',
'rv' => 'video/vnd.rn-realvideo',
'sea' => 'application/octet-stream',
'shtml' => 'text/html',
'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',
'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',
'xls' => 'application/vnd.ms-excel',
'xml' => 'text/xml', 'xml' => 'text/xml',
'xsl' => 'text/xml', 'xsl' => 'text/xml',
'mpeg' => 'video/mpeg', 'zip' => 'application/zip'
'mpg' => 'video/mpeg',
'mpe' => 'video/mpeg',
'qt' => 'video/quicktime',
'mov' => 'video/quicktime',
'avi' => 'video/x-msvideo',
'movie' => 'video/x-sgi-movie',
'doc' => 'application/msword',
'word' => 'application/msword',
'xl' => 'application/excel',
'eml' => 'message/rfc822'
); );
return ( ! isset($mimes[strtolower($ext)])) ? 'application/octet-stream' : $mimes[strtolower($ext)]; return ( ! isset($mimes[strtolower($ext)])) ? 'application/octet-stream' : $mimes[strtolower($ext)];
} }
@ -1898,7 +1910,8 @@ class PHPMailer {
* @param string $key_filename Parameter File Name * @param string $key_filename Parameter File Name
* @param string $key_pass Password for private key * @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_file = $key_filename;
$this->sign_key_pass = $key_pass; $this->sign_key_pass = $key_pass;
} }

View File

@ -2,7 +2,7 @@
/*~ class.smtp.php /*~ class.smtp.php
.---------------------------------------------------------------------------. .---------------------------------------------------------------------------.
| Software: PHPMailer - PHP email class | | Software: PHPMailer - PHP email class |
| Version: 2.0.2 | | Version: 2.0.4 |
| Contact: via sourceforge.net support pages (also www.codeworxtech.com) | | Contact: via sourceforge.net support pages (also www.codeworxtech.com) |
| Info: http://phpmailer.sourceforge.net | | Info: http://phpmailer.sourceforge.net |
| Support: http://sourceforge.net/projects/phpmailer/ | | Support: http://sourceforge.net/projects/phpmailer/ |