WordPress.org

Make WordPress Core

Changeset 19849


Ignore:
Timestamp:
02/07/12 16:13:51 (4 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.