Make WordPress Core

Changeset 19849


Ignore:
Timestamp:
02/07/2012 04:13:51 PM (13 years ago)
Author:
ryan
Message:

Upgrade PHPMailer to 5.2.1. Props MattyRob. fixes #19887

Location:
trunk/wp-includes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/class-phpmailer.php

    r19642 r19849  
    33.---------------------------------------------------------------------------.
    44|  Software: PHPMailer - PHP email class                                    |
    5 |   Version: 5.2                                                            |
     5|   Version: 5.2.1                                                          |
    66|      Site: https://code.google.com/a/apache-extras.org/p/phpmailer/       |
    77| ------------------------------------------------------------------------- |
     
    1111|          : Jim Jagielski (jimjag) jimjag@gmail.com                        |
    1212|   Founder: Brent R. Matzelle (original founder)                           |
    13 | Copyright (c) 2010-2011, Jim Jagielski. All Rights Reserved.               |
     13| Copyright (c) 2010-2012, Jim Jagielski. All Rights Reserved.              |
    1414| Copyright (c) 2004-2009, Andy Prevost. All Rights Reserved.               |
    1515| Copyright (c) 2001-2003, Brent R. Matzelle                                |
     
    3030 * @author Marcus Bointon
    3131 * @author Jim Jagielski
    32  * @copyright 2010 - 2011 Jim Jagielski
     32 * @copyright 2010 - 2012 Jim Jagielski
    3333 * @copyright 2004 - 2009 Andy Prevost
    3434 * @version $Id: class.phpmailer.php 450 2010-06-23 16:46:33Z coolbru $
     
    129129   */
    130130  protected $MIMEHeader     = '';
     131
     132  /**
     133   * Stores the complete sent MIME message (Body and Headers)
     134   * @var string
     135   * @access protected
     136  */
     137  protected $SentMIMEMessage     = '';
    131138
    132139  /**
     
    318325   * @var string
    319326   */
    320   public $Version         = '5.2';
     327  public $Version         = '5.2.1';
    321328
    322329  /**
     
    461468   */
    462469  public function AddReplyTo($address, $name = '') {
    463     return $this->AddAnAddress('ReplyTo', $address, $name);
     470    return $this->AddAnAddress('Reply-To', $address, $name);
    464471  }
    465472
     
    474481   */
    475482  protected function AddAnAddress($kind, $address, $name = '') {
    476     if (!preg_match('/^(to|cc|bcc|ReplyTo)$/', $kind)) {
     483    if (!preg_match('/^(to|cc|bcc|Reply-To)$/', $kind)) {
    477484      $this->SetError($this->Lang('Invalid recipient array').': '.$kind);
    478485      if ($this->exceptions) {
    479486        throw new phpmailerException('Invalid recipient array: ' . $kind);
    480487      }
    481       echo $this->Lang('Invalid recipient array').': '.$kind;
     488      if ($this->SMTPDebug) {
     489        echo $this->Lang('Invalid recipient array').': '.$kind;
     490      }
    482491      return false;
    483492    }
     
    489498        throw new phpmailerException($this->Lang('invalid_address').': '.$address);
    490499      }
    491       echo $this->Lang('invalid_address').': '.$address;
     500      if ($this->SMTPDebug) {
     501        echo $this->Lang('invalid_address').': '.$address;
     502      }
    492503      return false;
    493504    }
    494     if ($kind != 'ReplyTo') {
     505    if ($kind != 'Reply-To') {
    495506      if (!isset($this->all_recipients[strtolower($address)])) {
    496507        array_push($this->$kind, array($address, $name));
     
    521532        throw new phpmailerException($this->Lang('invalid_address').': '.$address);
    522533      }
    523       echo $this->Lang('invalid_address').': '.$address;
     534      if ($this->SMTPDebug) {
     535        echo $this->Lang('invalid_address').': '.$address;
     536      }
    524537      return false;
    525538    }
     
    528541    if ($auto) {
    529542      if (empty($this->ReplyTo)) {
    530         $this->AddAnAddress('ReplyTo', $address, $name);
     543        $this->AddAnAddress('Reply-To', $address, $name);
    531544      }
    532545      if (empty($this->Sender)) {
     
    575588      return $this->PostSend();
    576589    } catch (phpmailerException $e) {
     590      $this->SentMIMEMessage = '';
    577591      $this->SetError($e->getMessage());
    578592      if ($this->exceptions) {
     
    585599  protected function PreSend() {
    586600    try {
     601      $mailHeader = "";
    587602      if ((count($this->to) + count($this->cc) + count($this->bcc)) < 1) {
    588603        throw new phpmailerException($this->Lang('provide_address'), self::STOP_CRITICAL);
     
    604619      $this->MIMEBody = $this->CreateBody();
    605620
     621      // To capture the complete message when using mail(), create
     622      // an extra header list which CreateHeader() doesn't fold in
     623      if ($this->Mailer == 'mail') {
     624        if (count($this->to) > 0) {
     625          $mailHeader .= $this->AddrAppend("To", $this->to);
     626        } else {
     627          $mailHeader .= $this->HeaderLine("To", "undisclosed-recipients:;");
     628        }
     629        $mailHeader .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader(trim($this->Subject))));
     630        // if(count($this->cc) > 0) {
     631            // $mailHeader .= $this->AddrAppend("Cc", $this->cc);
     632        // }
     633      }
    606634
    607635      // digitally sign with DKIM if enabled
     
    611639      }
    612640
     641      $this->SentMIMEMessage = sprintf("%s%s\r\n\r\n%s",$this->MIMEHeader,$mailHeader,$this->MIMEBody);
    613642      return true;
     643
    614644    } catch (phpmailerException $e) {
    615645      $this->SetError($e->getMessage());
     
    629659        case 'smtp':
    630660          return $this->SmtpSend($this->MIMEHeader, $this->MIMEBody);
     661        case 'mail':
     662          return $this->MailSend($this->MIMEHeader, $this->MIMEBody);
    631663        default:
    632664          return $this->MailSend($this->MIMEHeader, $this->MIMEBody);
     
    638670        throw $e;
    639671      }
    640       echo $e->getMessage()."\n";
     672      if ($this->SMTPDebug) {
     673        echo $e->getMessage()."\n";
     674      }
    641675      return false;
    642676    }
     
    704738
    705739    if (empty($this->Sender)) {
    706       $params = "-oi -f %s";
     740      $params = "-oi ";
    707741    } else {
    708742      $params = sprintf("-oi -f %s", $this->Sender);
     
    733767        }
    734768      } else {
    735         $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header);
     769        $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, $params);
    736770        // implement call back function if it exists
    737771        $isSent = ($rt == 1) ? 1 : 0;
     
    881915    } catch (phpmailerException $e) {
    882916      $this->smtp->Reset();
    883       throw $e;
     917      if ($this->exceptions) {
     918        throw $e;
     919      }
    884920    }
    885921    return true;
     
    11601196        }
    11611197      }
    1162     }
     1198    }
    11631199
    11641200    $from = array();
     
    11781214
    11791215    if(count($this->ReplyTo) > 0) {
    1180       $result .= $this->AddrAppend('Reply-to', $this->ReplyTo);
     1216      $result .= $this->AddrAppend('Reply-To', $this->ReplyTo);
    11811217    }
    11821218
     
    12501286    return $result;
    12511287  }
     1288
     1289  /**
     1290   * Returns the MIME message (headers and body). Only really valid post PreSend().
     1291   * @access public
     1292   * @return string
     1293   */
     1294  public function GetSentMIMEMessage() {
     1295    return $this->SentMIMEMessage;
     1296  }
     1297
    12521298
    12531299  /**
     
    13641410        if (@openssl_pkcs7_sign($file, $signed, "file://".$this->sign_cert_file, array("file://".$this->sign_key_file, $this->sign_key_pass), NULL)) {
    13651411          @unlink($file);
     1412          $body = file_get_contents($signed);
    13661413          @unlink($signed);
    1367           $body = file_get_contents($signed);
    13681414        } else {
    13691415          @unlink($file);
     
    14881534        throw $e;
    14891535      }
    1490       echo $e->getMessage()."\n";
     1536      if ($this->SMTPDebug) {
     1537        echo $e->getMessage()."\n";
     1538      }
    14911539      if ( $e->getCode() == self::STOP_CRITICAL ) {
    14921540        return false;
     
    15911639        }
    15921640      }
    1593       if (version_compare(PHP_VERSION, '5.3.0', '<')) {
    1594         $magic_quotes = get_magic_quotes_runtime();
    1595         set_magic_quotes_runtime(0);
    1596       }
     1641      $magic_quotes = get_magic_quotes_runtime();
     1642      if ($magic_quotes) {
     1643        if (version_compare(PHP_VERSION, '5.3.0', '<')) {
     1644          set_magic_quotes_runtime(0);
     1645        } else {
     1646          ini_set('magic_quotes_runtime', 0);
     1647        }
     1648      }
    15971649      $file_buffer  = file_get_contents($path);
    15981650      $file_buffer  = $this->EncodeString($file_buffer, $encoding);
    1599       if (version_compare(PHP_VERSION, '5.3.0', '<')) {
    1600         set_magic_quotes_runtime($magic_quotes);
    1601       }
     1651      if ($magic_quotes) {
     1652        if (version_compare(PHP_VERSION, '5.3.0', '<')) {
     1653          set_magic_quotes_runtime($magic_quotes);
     1654        } else {
     1655          ini_set('magic_quotes_runtime', $magic_quotes);
     1656        }
     1657      }
    16021658      return $file_buffer;
    16031659    } catch (Exception $e) {
     
    21552211   */
    21562212  public function MsgHTML($message, $basedir = '') {
    2157     preg_match_all("/(src|background)=\"(.*)\"/Ui", $message, $images);
     2213    preg_match_all("/(src|background)=[\"'](.*)[\"']/Ui", $message, $images);
    21582214    if(isset($images[2])) {
    21592215      foreach($images[2] as $i => $url) {
     
    21692225          if ( strlen($directory) > 1 && substr($directory, -1) != '/') { $directory .= '/'; }
    21702226          if ( $this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64', $mimeType) ) {
    2171             $message = preg_replace("/".$images[1][$i]."=\"".preg_quote($url, '/')."\"/Ui", $images[1][$i]."=\"".$cid."\"", $message);
     2227            $message = preg_replace("/".$images[1][$i]."=[\"']".preg_quote($url, '/')."[\"']/Ui", $images[1][$i]."=\"".$cid."\"", $message);
    21722228          }
    21732229        }
     
    21762232    $this->IsHTML(true);
    21772233    $this->Body = $message;
    2178     $textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s', '', $message)));
    2179     if (!empty($textMsg) && empty($this->AltBody)) {
    2180       $this->AltBody = html_entity_decode($textMsg);
    2181     }
     2234    if (empty($this->AltBody)) {
     2235        $textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s', '', $message)));
     2236        if (!empty($textMsg)) {
     2237            $this->AltBody = html_entity_decode($textMsg, ENT_QUOTES, $this->CharSet);
     2238        }
     2239    }
    21822240    if (empty($this->AltBody)) {
    21832241      $this->AltBody = 'To view this email message, open it in a program that understands HTML!' . "\n\n";
    21842242    }
     2243    return $message;
    21852244  }
    21862245
  • trunk/wp-includes/class-smtp.php

    r19632 r19849  
    33.---------------------------------------------------------------------------.
    44|  Software: PHPMailer - PHP email class                                    |
    5 |   Version: 5.2                                                            |
     5|   Version: 5.2.1                                                          |
    66|      Site: https://code.google.com/a/apache-extras.org/p/phpmailer/       |
    77| ------------------------------------------------------------------------- |
     
    1111|          : Jim Jagielski (jimjag) jimjag@gmail.com                        |
    1212|   Founder: Brent R. Matzelle (original founder)                           |
    13 | Copyright (c) 2010-2011, Jim Jagielski. All Rights Reserved.               |
     13| Copyright (c) 2010-2012, Jim Jagielski. All Rights Reserved.              |
    1414| Copyright (c) 2004-2009, Andy Prevost. All Rights Reserved.               |
    1515| Copyright (c) 2001-2003, Brent R. Matzelle                                |
     
    3131 * @copyright 2004 - 2008 Andy Prevost
    3232 * @author Jim Jagielski
    33  * @copyright 2010 - 2011 Jim Jagielski
     33 * @copyright 2010 - 2012 Jim Jagielski
    3434 * @license http://www.gnu.org/copyleft/lesser.html Distributed under the Lesser General Public License (LGPL)
    3535 * @version $Id: class.smtp.php 450 2010-06-23 16:46:33Z coolbru $
     
    7373   * @var string
    7474   */
    75   public $Version         = '5.2';
     75  public $Version         = '5.2.1';
    7676
    7777  /////////////////////////////////////////////////
     
    798798  private function get_lines() {
    799799    $data = "";
    800     while($str = @fgets($this->smtp_conn,515)) {
     800    while(!feof($this->smtp_conn)) {
     801      $str = @fgets($this->smtp_conn,515);
    801802      if($this->do_debug >= 4) {
    802803        echo "SMTP -> get_lines(): \$data was \"$data\"" . $this->CRLF . '<br />';
Note: See TracChangeset for help on using the changeset viewer.