Make WordPress Core

Changeset 49714


Ignore:
Timestamp:
11/30/2020 05:24:50 PM (4 years ago)
Author:
SergeyBiryukov
Message:

External Libraries: Upgrade PHPMailer to version 6.2.0.

For a full list of changes in this update, see the PHPMailer GitHub:
https://github.com/PHPMailer/PHPMailer/compare/v6.1.8...v6.2.0

Props ayeshrajans, jrf.
Reviewed by jrf, SergeyBiryukov.
Merges [49713] to the 5.6 branch.
Fixes #51874.

Location:
branches/5.6
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/5.6

  • branches/5.6/src/wp-includes/PHPMailer/Exception.php

    r49136 r49714  
    11<?php
     2
    23/**
    34 * PHPMailer Exception class.
  • branches/5.6/src/wp-includes/PHPMailer/PHPMailer.php

    r49136 r49714  
    11<?php
     2
    23/**
    34 * PHPMailer - PHP email creation and transport class.
     
    389390     * Debug output level.
    390391     * Options:
    391      * * SMTP::DEBUG_OFF: No output
    392      * * SMTP::DEBUG_CLIENT: Client messages
    393      * * SMTP::DEBUG_SERVER: Client and server messages
    394      * * SMTP::DEBUG_CONNECTION: As SERVER plus connection status
    395      * * SMTP::DEBUG_LOWLEVEL: Noisy, low-level data output, rarely needed
     392     * @see SMTP::DEBUG_OFF: No output
     393     * @see SMTP::DEBUG_CLIENT: Client messages
     394     * @see SMTP::DEBUG_SERVER: Client and server messages
     395     * @see SMTP::DEBUG_CONNECTION: As SERVER plus connection status
     396     * @see SMTP::DEBUG_LOWLEVEL: Noisy, low-level data output, rarely needed
    396397     *
    397398     * @see SMTP::$do_debug
     
    748749     * @var string
    749750     */
    750     const VERSION = '6.1.8';
     751    const VERSION = '6.2.0';
    751752
    752753    /**
     
    11861187            $list = imap_rfc822_parse_adrlist($addrstr, '');
    11871188            foreach ($list as $address) {
    1188                 if (('.SYNTAX-ERROR.' !== $address->host) && static::validateAddress(
    1189                     $address->mailbox . '@' . $address->host
    1190                 )) {
     1189                if (
     1190                    ('.SYNTAX-ERROR.' !== $address->host) && static::validateAddress(
     1191                        $address->mailbox . '@' . $address->host
     1192                    )
     1193                ) {
    11911194                    $addresses[] = [
    11921195                        'name' => (property_exists($address, 'personal') ? $address->personal : ''),
     
    12421245        // Don't validate now addresses with IDN. Will be done in send().
    12431246        $pos = strrpos($address, '@');
    1244         if ((false === $pos)
     1247        if (
     1248            (false === $pos)
    12451249            || ((!$this->has8bitChars(substr($address, ++$pos)) || !static::idnSupported())
    12461250            && !static::validateAddress($address))
     
    13941398        // Verify we have required functions, CharSet, and at-sign.
    13951399        $pos = strrpos($address, '@');
    1396         if (!empty($this->CharSet) &&
     1400        if (
     1401            !empty($this->CharSet) &&
    13971402            false !== $pos &&
    13981403            static::idnSupported()
     
    14581463    public function preSend()
    14591464    {
    1460         if ('smtp' === $this->Mailer
    1461             || ('mail' === $this->Mailer && stripos(PHP_OS, 'WIN') === 0)
     1465        if (
     1466            'smtp' === $this->Mailer
     1467            || ('mail' === $this->Mailer && (PHP_VERSION_ID >= 80000 || stripos(PHP_OS, 'WIN') === 0))
    14621468        ) {
    14631469            //SMTP mandates RFC-compliant line endings
     
    14691475        }
    14701476        //Check for buggy PHP versions that add a header with an incorrect line break
    1471         if ('mail' === $this->Mailer
     1477        if (
     1478            'mail' === $this->Mailer
    14721479            && ((PHP_VERSION_ID >= 70000 && PHP_VERSION_ID < 70017)
    14731480                || (PHP_VERSION_ID >= 70100 && PHP_VERSION_ID < 70103))
     
    15561563
    15571564            // Sign with DKIM if enabled
    1558             if (!empty($this->DKIM_domain)
     1565            if (
     1566                !empty($this->DKIM_domain)
    15591567                && !empty($this->DKIM_selector)
    15601568                && (!empty($this->DKIM_private_string)
     
    16141622        } catch (Exception $exc) {
    16151623            if ($this->Mailer === 'smtp' && $this->SMTPKeepAlive == true) {
    1616               $this->smtp->reset();
     1624                $this->smtp->reset();
    16171625            }
    16181626            $this->setError($exc->getMessage());
     
    17201728    {
    17211729        // Future-proof
    1722         if (escapeshellcmd($string) !== $string
     1730        if (
     1731            escapeshellcmd($string) !== $string
    17231732            || !in_array(escapeshellarg($string), ["'$string'", "\"$string\""])
    17241733        ) {
     
    19041913                }
    19051914
    1906                 $callbacks[] = ['issent'=>$isSent, 'to'=>$to[0]];
     1915                $callbacks[] = ['issent' => $isSent, 'to' => $to[0]];
    19071916            }
    19081917        }
     
    19841993        foreach ($hosts as $hostentry) {
    19851994            $hostinfo = [];
    1986             if (!preg_match(
    1987                 '/^(?:(ssl|tls):\/\/)?(.+?)(?::(\d+))?$/',
    1988                 trim($hostentry),
    1989                 $hostinfo
    1990             )) {
     1995            if (
     1996                !preg_match(
     1997                    '/^(?:(ssl|tls):\/\/)?(.+?)(?::(\d+))?$/',
     1998                    trim($hostentry),
     1999                    $hostinfo
     2000                )
     2001            ) {
    19912002                $this->edebug($this->lang('invalid_hostentry') . ' ' . trim($hostentry));
    19922003                // Not a valid host entry
     
    20572068                        $this->smtp->hello($hello);
    20582069                    }
    2059                     if ($this->SMTPAuth && !$this->smtp->authenticate(
    2060                         $this->Username,
    2061                         $this->Password,
    2062                         $this->AuthType,
    2063                         $this->oauth
    2064                     )) {
     2070                    if (
     2071                        $this->SMTPAuth && !$this->smtp->authenticate(
     2072                            $this->Username,
     2073                            $this->Password,
     2074                            $this->AuthType,
     2075                            $this->oauth
     2076                        )
     2077                    ) {
    20652078                        throw new Exception($this->lang('authenticate'));
    20662079                    }
     
    21202133        ];
    21212134
    2122         if (isset($renamed_langcodes[$langcode])) {
     2135        if (array_key_exists($langcode, $renamed_langcodes)) {
    21232136            $langcode = $renamed_langcodes[$langcode];
    21242137        }
     
    24292442
    24302443        // sendmail and mail() extract Bcc from the header before sending
    2431         if ((
     2444        if (
     2445            (
    24322446                'sendmail' === $this->Mailer || 'qmail' === $this->Mailer || 'mail' === $this->Mailer
    24332447            )
     
    38993913    {
    39003914        //Simple syntax limits
    3901         if (empty($host)
     3915        if (
     3916            empty($host)
    39023917            || !is_string($host)
    39033918            || strlen($host) > 256
     
    40654080                    continue;
    40664081                }
    4067                 if (// Only process relative URLs if a basedir is provided (i.e. no absolute local paths)
     4082                if (
     4083                    // Only process relative URLs if a basedir is provided (i.e. no absolute local paths)
    40684084                    !empty($basedir)
    40694085                    // Ignore URLs containing parent dir traversal (..)
     
    40874103                        $directory .= '/';
    40884104                    }
    4089                     if ($this->addEmbeddedImage(
    4090                         $basedir . $directory . $filename,
    4091                         $cid,
    4092                         $filename,
    4093                         static::ENCODING_BASE64,
    4094                         static::_mime_types((string) static::mb_pathinfo($filename, PATHINFO_EXTENSION))
    4095                     )
     4105                    if (
     4106                        $this->addEmbeddedImage(
     4107                            $basedir . $directory . $filename,
     4108                            $cid,
     4109                            $filename,
     4110                            static::ENCODING_BASE64,
     4111                            static::_mime_types((string) static::mb_pathinfo($filename, PATHINFO_EXTENSION))
     4112                        )
    40964113                    ) {
    40974114                        $message = preg_replace(
     
    45124529        }
    45134530        if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) {
     4531            if (PHP_MAJOR_VERSION < 8) {
     4532                openssl_pkey_free($privKey);
     4533            }
     4534
     4535            return base64_encode($signature);
     4536        }
     4537        if (PHP_MAJOR_VERSION < 8) {
    45144538            openssl_pkey_free($privKey);
    4515 
    4516             return base64_encode($signature);
    4517         }
    4518         openssl_pkey_free($privKey);
     4539        }
    45194540
    45204541        return '';
  • branches/5.6/src/wp-includes/PHPMailer/SMTP.php

    r49136 r49714  
    11<?php
     2
    23/**
    34 * PHPMailer RFC821 SMTP email transport class.
     
    3536     * @var string
    3637     */
    37     const VERSION = '6.1.8';
     38    const VERSION = '6.2.0';
    3839
    3940    /**
     
    540541                }
    541542                // Send encoded username and password
    542                 if (!$this->sendCommand(
    543                     'User & Password',
    544                     base64_encode("\0" . $username . "\0" . $password),
    545                     235
    546                 )
     543                if (
     544                    !$this->sendCommand(
     545                        'User & Password',
     546                        base64_encode("\0" . $username . "\0" . $password),
     547                        235
     548                    )
    547549                ) {
    548550                    return false;
     
    10871089        //If SMTP transcripts are left enabled, or debug output is posted online
    10881090        //it can leak credentials, so hide credentials in all but lowest level
    1089         if (self::DEBUG_LOWLEVEL > $this->do_debug &&
    1090             in_array($command, ['User & Password', 'Username', 'Password'], true)) {
     1091        if (
     1092            self::DEBUG_LOWLEVEL > $this->do_debug &&
     1093            in_array($command, ['User & Password', 'Username', 'Password'], true)
     1094        ) {
    10911095            $this->edebug('CLIENT -> SERVER: [credentials hidden]', self::DEBUG_CLIENT);
    10921096        } else {
     
    12081212                );
    12091213
    1210                 //stream_select returns false when the `select` system call is interrupted by an incoming signal, try the select again
     1214                //stream_select returns false when the `select` system call is interrupted
     1215                //by an incoming signal, try the select again
    12111216                if (stripos($message, 'interrupted system call') !== false) {
    12121217                    $this->edebug(
Note: See TracChangeset for help on using the changeset viewer.