diff --git a/changelog.md b/changelog.md index ff40e6ba..ec512121 100644 --- a/changelog.md +++ b/changelog.md @@ -6,8 +6,8 @@ This is a major update that breaks backwards compatibility. To emphasise that th * Requires PHP 5.5 or later * Uses the `PHPMailer\PHPMailer` namespace * File structure simplified, classes live in the `src/` folder -* Custom autoloader has been removed, now PSR-4 compatible: **use composer**! -* Classes renamed to make use of the namespace +* The custom autoloader has been removed, now PSR-4 compatible: **use composer**! +* Classes & Exceptions renamed to make use of the namespace * `Extras` classes have been removed - use packages from packagist.org instead * All elements previously marked as deprecated have been removed: * `PHPMailer->Version` @@ -19,13 +19,13 @@ This is a major update that breaks backwards compatibility. To emphasise that th * `SMTP->SMTP_PORT` * `POP3->CRLF` * `POP3->Version` -* All elements previously marked as deprecated have been removed (e.g. `ReturnPath`) * NTLM authentication removed - never worked anyway! * `PHPMailer->Workstation` * `PHPMailer->Realm` * `SMTP::authenticate` method signature changed * `parseAddresses()` is now static * `validateAddress()` is now called statically from `parseAddresses()` +* `PHPMailer->SingleToArray` is now protected * Extensive reworking of XOAUTH2, adding support for Google, Yahoo and Microsoft providers in the standard PHPMailer class, thanks to @sherryl4george * Fix extra line break in getSentMIMEMessage() * Improve DKIM signing to use SHA-2 diff --git a/composer.json b/composer.json index fe0a55da..50ae2c6f 100644 --- a/composer.json +++ b/composer.json @@ -20,8 +20,7 @@ } ], "require": { - "php": ">=5.5.0", - "league/oauth2-google": "1.*" + "php": ">=5.5.0" }, "require-dev": { "phpdocumentor/phpdocumentor": "2.*", diff --git a/composer.lock b/composer.lock index 570c4f6d..4b0b4e17 100644 --- a/composer.lock +++ b/composer.lock @@ -4,438 +4,9 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "041a4d6e1c80df6aa890326a9a0ba9b5", - "content-hash": "f8091a8dff4749bb4e9b1d2cbe2544ab", - "packages": [ - { - "name": "guzzlehttp/guzzle", - "version": "6.2.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "d094e337976dff9d8e2424e8485872194e768662" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d094e337976dff9d8e2424e8485872194e768662", - "reference": "d094e337976dff9d8e2424e8485872194e768662", - "shasum": "" - }, - "require": { - "guzzlehttp/promises": "~1.0", - "guzzlehttp/psr7": "~1.1", - "php": ">=5.5.0" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "~4.0", - "psr/log": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.2-dev" - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "time": "2016-03-21 20:02:09" - }, - { - "name": "guzzlehttp/promises", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "bb9024c526b22f3fe6ae55a561fd70653d470aa8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/bb9024c526b22f3fe6ae55a561fd70653d470aa8", - "reference": "bb9024c526b22f3fe6ae55a561fd70653d470aa8", - "shasum": "" - }, - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "time": "2016-03-08 01:15:46" - }, - { - "name": "guzzlehttp/psr7", - "version": "1.2.3", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "2e89629ff057ebb49492ba08e6995d3a6a80021b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/2e89629ff057ebb49492ba08e6995d3a6a80021b", - "reference": "2e89629ff057ebb49492ba08e6995d3a6a80021b", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "PSR-7 message implementation", - "keywords": [ - "http", - "message", - "stream", - "uri" - ], - "time": "2016-02-18 21:54:00" - }, - { - "name": "ircmaxell/random-lib", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/ircmaxell/RandomLib.git", - "reference": "13efa4368bb2ac88bb3b1459b487d907de4dbf7c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ircmaxell/RandomLib/zipball/13efa4368bb2ac88bb3b1459b487d907de4dbf7c", - "reference": "13efa4368bb2ac88bb3b1459b487d907de4dbf7c", - "shasum": "" - }, - "require": { - "ircmaxell/security-lib": "1.0.*@dev", - "php": ">=5.3.2" - }, - "require-dev": { - "mikey179/vfsstream": "1.1.*", - "phpunit/phpunit": "3.7.*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "RandomLib": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Anthony Ferrara", - "email": "ircmaxell@ircmaxell.com", - "homepage": "http://blog.ircmaxell.com" - } - ], - "description": "A Library For Generating Secure Random Numbers", - "homepage": "https://github.com/ircmaxell/RandomLib", - "keywords": [ - "cryptography", - "random", - "random-numbers", - "random-strings" - ], - "time": "2015-01-15 16:31:45" - }, - { - "name": "ircmaxell/security-lib", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/ircmaxell/SecurityLib.git", - "reference": "80934de3c482dcafb46b5756e59ebece082b6dc7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ircmaxell/SecurityLib/zipball/80934de3c482dcafb46b5756e59ebece082b6dc7", - "reference": "80934de3c482dcafb46b5756e59ebece082b6dc7", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "mikey179/vfsstream": "1.1.*" - }, - "type": "library", - "autoload": { - "psr-0": { - "SecurityLib": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Anthony Ferrara", - "email": "ircmaxell@ircmaxell.com", - "homepage": "http://blog.ircmaxell.com" - } - ], - "description": "A Base Security Library", - "homepage": "https://github.com/ircmaxell/PHP-SecurityLib", - "time": "2013-04-30 18:00:34" - }, - { - "name": "league/oauth2-client", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/oauth2-client.git", - "reference": "5e5c0bc5bd219515c8d8db8bcb61f19753101b7c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/5e5c0bc5bd219515c8d8db8bcb61f19753101b7c", - "reference": "5e5c0bc5bd219515c8d8db8bcb61f19753101b7c", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "guzzlehttp/guzzle": "~6.0", - "ircmaxell/random-lib": "~1.1", - "php": ">=5.5.0" - }, - "require-dev": { - "jakub-onderka/php-parallel-lint": "0.8.*", - "mockery/mockery": "~0.9", - "phpunit/phpunit": "~4.0", - "satooshi/php-coveralls": "0.6.*", - "squizlabs/php_codesniffer": "~2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "League\\OAuth2\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alex Bilbie", - "email": "hello@alexbilbie.com", - "homepage": "http://www.alexbilbie.com", - "role": "Developer" - } - ], - "description": "OAuth 2.0 Client Library", - "keywords": [ - "Authentication", - "SSO", - "authorization", - "identity", - "idp", - "oauth", - "oauth2", - "single sign on" - ], - "time": "2016-02-13 20:18:03" - }, - { - "name": "league/oauth2-google", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/oauth2-google.git", - "reference": "4788fcef5cf0fdb65e0322c3f4d4632d8f1f3e82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-google/zipball/4788fcef5cf0fdb65e0322c3f4d4632d8f1f3e82", - "reference": "4788fcef5cf0fdb65e0322c3f4d4632d8f1f3e82", - "shasum": "" - }, - "require": { - "league/oauth2-client": "~1.0" - }, - "require-dev": { - "mockery/mockery": "~0.9", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "League\\OAuth2\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Woody Gilk", - "email": "woody.gilk@gmail.com", - "homepage": "http://shadowhand.me" - } - ], - "description": "Google OAuth 2.0 Client Provider for The PHP League OAuth2-Client", - "keywords": [ - "Authentication", - "authorization", - "client", - "google", - "oauth", - "oauth2" - ], - "time": "2015-08-28 18:33:30" - }, - { - "name": "psr/http-message", - "version": "1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298", - "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "time": "2015-05-04 20:22:00" - } - ], + "hash": "1dbce674428c84da4c66ee69f5068867", + "content-hash": "df3ba04ebc03b2f857a8ef7d9301bfc6", + "packages": [], "packages-dev": [ { "name": "cilex/cilex", @@ -1184,16 +755,16 @@ }, { "name": "monolog/monolog", - "version": "1.18.2", + "version": "1.19.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "064b38c16790249488e7a8b987acf1c9d7383c09" + "reference": "5f56ed5212dc509c8dc8caeba2715732abb32dbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/064b38c16790249488e7a8b987acf1c9d7383c09", - "reference": "064b38c16790249488e7a8b987acf1c9d7383c09", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/5f56ed5212dc509c8dc8caeba2715732abb32dbf", + "reference": "5f56ed5212dc509c8dc8caeba2715732abb32dbf", "shasum": "" }, "require": { @@ -1258,7 +829,7 @@ "logging", "psr-3" ], - "time": "2016-04-02 13:12:58" + "time": "2016-04-12 18:29:35" }, { "name": "nikic/php-parser", @@ -3290,16 +2861,16 @@ }, { "name": "zendframework/zend-cache", - "version": "2.6.1", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-cache.git", - "reference": "e2f62aaf4a8f884060483921a8d6d39d9087705d" + "reference": "33211da0598e8f20a8d425945e3d452a87c50364" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-cache/zipball/e2f62aaf4a8f884060483921a8d6d39d9087705d", - "reference": "e2f62aaf4a8f884060483921a8d6d39d9087705d", + "url": "https://api.github.com/repos/zendframework/zend-cache/zipball/33211da0598e8f20a8d425945e3d452a87c50364", + "reference": "33211da0598e8f20a8d425945e3d452a87c50364", "shasum": "" }, "require": { @@ -3310,12 +2881,13 @@ }, "require-dev": { "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", + "phpunit/phpunit": "^4.5", "zendframework/zend-serializer": "^2.6", - "zendframework/zend-session": "^2.5" + "zendframework/zend-session": "^2.6.2" }, "suggest": { - "ext-apcu": "APCU, to use the APC storage adapter", + "ext-apc": "APC or compatible extension, to use the APC storage adapter", + "ext-apcu": "APCU >= 5.1.0, to use the APCu storage adapter", "ext-dba": "DBA, to use the DBA storage adapter", "ext-memcache": "Memcache >= 2.0.0 to use the Memcache storage adapter", "ext-memcached": "Memcached >= 1.0.0 to use the Memcached storage adapter", @@ -3330,8 +2902,12 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev", - "dev-develop": "2.7-dev" + "dev-master": "2.7-dev", + "dev-develop": "2.8-dev" + }, + "zf": { + "component": "Zend\\Cache", + "config-provider": "Zend\\Cache\\ConfigProvider" } }, "autoload": { @@ -3349,7 +2925,7 @@ "cache", "zf2" ], - "time": "2016-02-12 16:26:56" + "time": "2016-04-12 15:55:27" }, { "name": "zendframework/zend-config", @@ -3463,16 +3039,16 @@ }, { "name": "zendframework/zend-filter", - "version": "2.7.0", + "version": "2.7.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-filter.git", - "reference": "a236005581cd96a5d5940b37bec5efef1e87894d" + "reference": "84c50246428efb0a1e52868e162dab3e149d5b80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/a236005581cd96a5d5940b37bec5efef1e87894d", - "reference": "a236005581cd96a5d5940b37bec5efef1e87894d", + "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/84c50246428efb0a1e52868e162dab3e149d5b80", + "reference": "84c50246428efb0a1e52868e162dab3e149d5b80", "shasum": "" }, "require": { @@ -3519,7 +3095,7 @@ "filter", "zf2" ], - "time": "2016-04-06 14:04:38" + "time": "2016-04-18 18:32:43" }, { "name": "zendframework/zend-hydrator", @@ -3581,16 +3157,16 @@ }, { "name": "zendframework/zend-i18n", - "version": "2.7.1", + "version": "2.7.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-i18n.git", - "reference": "563499cdf4a2040fd933b586be28216305187137" + "reference": "d5ce2dca77a3e66777458f84acae06ce468bd6b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-i18n/zipball/563499cdf4a2040fd933b586be28216305187137", - "reference": "563499cdf4a2040fd933b586be28216305187137", + "url": "https://api.github.com/repos/zendframework/zend-i18n/zipball/d5ce2dca77a3e66777458f84acae06ce468bd6b7", + "reference": "d5ce2dca77a3e66777458f84acae06ce468bd6b7", "shasum": "" }, "require": { @@ -3644,7 +3220,7 @@ "i18n", "zf2" ], - "time": "2016-03-30 21:01:08" + "time": "2016-04-18 18:25:10" }, { "name": "zendframework/zend-json", @@ -3753,16 +3329,16 @@ }, { "name": "zendframework/zend-serializer", - "version": "2.7.0", + "version": "2.7.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-serializer.git", - "reference": "1dc6fab0f5f21f92bba8c5e74e2878b6e22a2c16" + "reference": "8b6ff840e19b5dd8eca40e20d635ff407053f7d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-serializer/zipball/1dc6fab0f5f21f92bba8c5e74e2878b6e22a2c16", - "reference": "1dc6fab0f5f21f92bba8c5e74e2878b6e22a2c16", + "url": "https://api.github.com/repos/zendframework/zend-serializer/zipball/8b6ff840e19b5dd8eca40e20d635ff407053f7d8", + "reference": "8b6ff840e19b5dd8eca40e20d635ff407053f7d8", "shasum": "" }, "require": { @@ -3805,7 +3381,7 @@ "serializer", "zf2" ], - "time": "2016-04-06 17:46:23" + "time": "2016-04-18 17:31:57" }, { "name": "zendframework/zend-servicemanager", @@ -3861,16 +3437,16 @@ }, { "name": "zendframework/zend-stdlib", - "version": "2.7.6", + "version": "2.7.7", "source": { "type": "git", "url": "https://github.com/zendframework/zend-stdlib.git", - "reference": "4499760badfada27ee600f5c2cfd47d5263ccf1b" + "reference": "0e44eb46788f65e09e077eb7f44d2659143bcc1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/4499760badfada27ee600f5c2cfd47d5263ccf1b", - "reference": "4499760badfada27ee600f5c2cfd47d5263ccf1b", + "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/0e44eb46788f65e09e077eb7f44d2659143bcc1f", + "reference": "0e44eb46788f65e09e077eb7f44d2659143bcc1f", "shasum": "" }, "require": { @@ -3916,7 +3492,7 @@ "stdlib", "zf2" ], - "time": "2016-02-19 16:02:11" + "time": "2016-04-12 21:17:31" }, { "name": "zetacomponents/base", diff --git a/src/PHPMailer.php b/src/PHPMailer.php index c31903b4..7d9b2afb 100644 --- a/src/PHPMailer.php +++ b/src/PHPMailer.php @@ -206,7 +206,6 @@ class PHPMailer /** * The default SMTP server port. * @var integer - * @TODO Why is this needed when the SMTP class takes care of it? */ public $Port = 25; @@ -331,9 +330,8 @@ class PHPMailer /** * Storage for addresses when SingleTo is enabled. * @var array - * @TODO This should really not be public */ - public $SingleToArray = []; + protected $SingleToArray = []; /** * Whether to generate VERP addresses on send. @@ -3498,7 +3496,6 @@ class PHPMailer * @param string $name The property name to set * @param mixed $value The value to set the property to * @return boolean - * @TODO Should this not be using the __set() magic function? */ public function set($name, $value = '') { diff --git a/test/phpmailerTest.php b/test/phpmailerTest.php index b2c3aa67..77c42641 100644 --- a/test/phpmailerTest.php +++ b/test/phpmailerTest.php @@ -1313,7 +1313,6 @@ EOT; * Tests this denial of service attack: * @link https://sourceforge.net/p/phpmailer/bugs/383/ * According to the ticket, this should get stuck in a loop, though I can't make it happen. - * @TODO No assertions in here - how can you assert for this? */ public function testDenialOfServiceAttack2() {