[Web] Update libs
parent
46928269bb
commit
ee6989bd1d
File diff suppressed because one or more lines are too long
|
@ -62,35 +62,39 @@
|
||||||
"oauth",
|
"oauth",
|
||||||
"oauth2"
|
"oauth2"
|
||||||
],
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/bshaffer/oauth2-server-php/issues",
|
||||||
|
"source": "https://github.com/bshaffer/oauth2-server-php/tree/master"
|
||||||
|
},
|
||||||
"time": "2018-12-04T00:29:32+00:00"
|
"time": "2018-12-04T00:29:32+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ddeboer/imap",
|
"name": "ddeboer/imap",
|
||||||
"version": "1.10.0",
|
"version": "1.11.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/ddeboer/imap.git",
|
"url": "https://github.com/ddeboer/imap.git",
|
||||||
"reference": "fc09dbf6fb9ba7317a95c719e45893efc4fe6bde"
|
"reference": "a089dfcb9d177f921eb5dadc8d4144a44dff22ee"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/ddeboer/imap/zipball/fc09dbf6fb9ba7317a95c719e45893efc4fe6bde",
|
"url": "https://api.github.com/repos/ddeboer/imap/zipball/a089dfcb9d177f921eb5dadc8d4144a44dff22ee",
|
||||||
"reference": "fc09dbf6fb9ba7317a95c719e45893efc4fe6bde",
|
"reference": "a089dfcb9d177f921eb5dadc8d4144a44dff22ee",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"ext-iconv": "*",
|
"ext-iconv": "*",
|
||||||
"ext-imap": "*",
|
"ext-imap": "*",
|
||||||
"ext-mbstring": "*",
|
"ext-mbstring": "*",
|
||||||
"php": "^7.2"
|
"php": "^7.3 || ^8.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"friendsofphp/php-cs-fixer": "^2.16",
|
"friendsofphp/php-cs-fixer": "^2.16.7",
|
||||||
"phpstan/phpstan": "^0.12",
|
"laminas/laminas-mail": "^2.12.3",
|
||||||
"phpstan/phpstan-phpunit": "^0.12",
|
"phpstan/phpstan": "^0.12.57",
|
||||||
"phpstan/phpstan-strict-rules": "^0.12",
|
"phpstan/phpstan-phpunit": "^0.12.16",
|
||||||
"phpunit/phpunit": "^8.5",
|
"phpstan/phpstan-strict-rules": "^0.12.5",
|
||||||
"zendframework/zend-mail": "^2.10"
|
"phpunit/phpunit": "^9.4.3"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
@ -122,20 +126,34 @@
|
||||||
"imap",
|
"imap",
|
||||||
"mail"
|
"mail"
|
||||||
],
|
],
|
||||||
"time": "2020-01-24T08:15:24+00:00"
|
"support": {
|
||||||
|
"issues": "https://github.com/ddeboer/imap/issues",
|
||||||
|
"source": "https://github.com/ddeboer/imap/tree/1.11.0"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/Slamdunk",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/ddeboer",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-11-30T14:52:49+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "matthiasmullie/minify",
|
"name": "matthiasmullie/minify",
|
||||||
"version": "1.3.63",
|
"version": "1.3.65",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/matthiasmullie/minify.git",
|
"url": "https://github.com/matthiasmullie/minify.git",
|
||||||
"reference": "9ba1b459828adc13430f4dd6c49dae4950dc4117"
|
"reference": "227f19062451c55a797e0cc667ef983834e6580c"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/matthiasmullie/minify/zipball/9ba1b459828adc13430f4dd6c49dae4950dc4117",
|
"url": "https://api.github.com/repos/matthiasmullie/minify/zipball/227f19062451c55a797e0cc667ef983834e6580c",
|
||||||
"reference": "9ba1b459828adc13430f4dd6c49dae4950dc4117",
|
"reference": "227f19062451c55a797e0cc667ef983834e6580c",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -182,7 +200,25 @@
|
||||||
"minifier",
|
"minifier",
|
||||||
"minify"
|
"minify"
|
||||||
],
|
],
|
||||||
"time": "2020-01-21T20:21:08+00:00"
|
"support": {
|
||||||
|
"issues": "https://github.com/matthiasmullie/minify/issues",
|
||||||
|
"source": "https://github.com/matthiasmullie/minify/tree/1.3.65"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/[user1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/matthiasmullie] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g.",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/user2",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2020-12-27T21:43:29+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "matthiasmullie/path-converter",
|
"name": "matthiasmullie/path-converter",
|
||||||
|
@ -231,6 +267,10 @@
|
||||||
"paths",
|
"paths",
|
||||||
"relative"
|
"relative"
|
||||||
],
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/matthiasmullie/path-converter/issues",
|
||||||
|
"source": "https://github.com/matthiasmullie/path-converter/tree/1.1.3"
|
||||||
|
},
|
||||||
"time": "2019-02-05T23:41:09+00:00"
|
"time": "2019-02-05T23:41:09+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -285,20 +325,20 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "paragonie/random_compat",
|
"name": "paragonie/random_compat",
|
||||||
"version": "v9.99.99",
|
"version": "v9.99.100",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/paragonie/random_compat.git",
|
"url": "https://github.com/paragonie/random_compat.git",
|
||||||
"reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
|
"reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
|
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
|
||||||
"reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
|
"reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7"
|
"php": ">= 7"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "4.*|5.*",
|
"phpunit/phpunit": "4.*|5.*",
|
||||||
|
@ -326,7 +366,12 @@
|
||||||
"pseudorandom",
|
"pseudorandom",
|
||||||
"random"
|
"random"
|
||||||
],
|
],
|
||||||
"time": "2018-07-02T15:55:56+00:00"
|
"support": {
|
||||||
|
"email": "info@paragonie.com",
|
||||||
|
"issues": "https://github.com/paragonie/random_compat/issues",
|
||||||
|
"source": "https://github.com/paragonie/random_compat"
|
||||||
|
},
|
||||||
|
"time": "2020-10-15T08:29:30+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "php-mime-mail-parser/php-mime-mail-parser",
|
"name": "php-mime-mail-parser/php-mime-mail-parser",
|
||||||
|
@ -408,31 +453,39 @@
|
||||||
"parser",
|
"parser",
|
||||||
"php"
|
"php"
|
||||||
],
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/php-mime-mail-parser/php-mime-mail-parser/issues",
|
||||||
|
"source": "https://github.com/php-mime-mail-parser/php-mime-mail-parser/tree/master"
|
||||||
|
},
|
||||||
"time": "2019-09-23T11:57:58+00:00"
|
"time": "2019-09-23T11:57:58+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpmailer/phpmailer",
|
"name": "phpmailer/phpmailer",
|
||||||
"version": "v6.1.6",
|
"version": "v6.2.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/PHPMailer/PHPMailer.git",
|
"url": "https://github.com/PHPMailer/PHPMailer.git",
|
||||||
"reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3"
|
"reference": "e38888a75c070304ca5514197d4847a59a5c853f"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3",
|
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e38888a75c070304ca5514197d4847a59a5c853f",
|
||||||
"reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3",
|
"reference": "e38888a75c070304ca5514197d4847a59a5c853f",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"ext-ctype": "*",
|
"ext-ctype": "*",
|
||||||
"ext-filter": "*",
|
"ext-filter": "*",
|
||||||
|
"ext-hash": "*",
|
||||||
"php": ">=5.5.0"
|
"php": ">=5.5.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
|
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
|
||||||
"doctrine/annotations": "^1.2",
|
"doctrine/annotations": "^1.2",
|
||||||
"friendsofphp/php-cs-fixer": "^2.2",
|
"phpcompatibility/php-compatibility": "^9.3.5",
|
||||||
"phpunit/phpunit": "^4.8 || ^5.7"
|
"roave/security-advisories": "dev-latest",
|
||||||
|
"squizlabs/php_codesniffer": "^3.5.6",
|
||||||
|
"yoast/phpunit-polyfills": "^0.2.0"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"ext-mbstring": "Needed to send email in multibyte encoding charset",
|
"ext-mbstring": "Needed to send email in multibyte encoding charset",
|
||||||
|
@ -470,13 +523,17 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
|
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/PHPMailer/PHPMailer/issues",
|
||||||
|
"source": "https://github.com/PHPMailer/PHPMailer/tree/v6.2.0"
|
||||||
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"url": "https://github.com/synchro",
|
"url": "https://github.com/Synchro",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2020-05-27T12:24:03+00:00"
|
"time": "2020-11-25T15:24:57+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "robthree/twofactorauth",
|
"name": "robthree/twofactorauth",
|
||||||
|
@ -527,6 +584,10 @@
|
||||||
"php",
|
"php",
|
||||||
"tfa"
|
"tfa"
|
||||||
],
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/RobThree/TwoFactorAuth/issues",
|
||||||
|
"source": "https://github.com/RobThree/TwoFactorAuth"
|
||||||
|
},
|
||||||
"time": "2020-01-02T19:56:46+00:00"
|
"time": "2020-01-02T19:56:46+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -577,6 +638,11 @@
|
||||||
"php",
|
"php",
|
||||||
"text"
|
"text"
|
||||||
],
|
],
|
||||||
|
"support": {
|
||||||
|
"email": "support@jevon.org",
|
||||||
|
"issues": "https://github.com/soundasleep/html2text/issues",
|
||||||
|
"source": "https://github.com/soundasleep/html2text/tree/master"
|
||||||
|
},
|
||||||
"time": "2017-04-19T22:01:50+00:00"
|
"time": "2017-04-19T22:01:50+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -614,6 +680,10 @@
|
||||||
],
|
],
|
||||||
"description": "Library for U2F implementation",
|
"description": "Library for U2F implementation",
|
||||||
"homepage": "https://developers.yubico.com/php-u2flib-server",
|
"homepage": "https://developers.yubico.com/php-u2flib-server",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/Yubico/php-u2flib-server/issues",
|
||||||
|
"source": "https://github.com/Yubico/php-u2flib-server/tree/1.0.2"
|
||||||
|
},
|
||||||
"time": "2018-09-07T08:16:44+00:00"
|
"time": "2018-09-07T08:16:44+00:00"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -625,5 +695,5 @@
|
||||||
"prefer-lowest": false,
|
"prefer-lowest": false,
|
||||||
"platform": [],
|
"platform": [],
|
||||||
"platform-dev": [],
|
"platform-dev": [],
|
||||||
"plugin-api-version": "1.1.0"
|
"plugin-api-version": "2.0.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,8 +37,8 @@ namespace Composer\Autoload;
|
||||||
*
|
*
|
||||||
* @author Fabien Potencier <fabien@symfony.com>
|
* @author Fabien Potencier <fabien@symfony.com>
|
||||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||||
* @see http://www.php-fig.org/psr/psr-0/
|
* @see https://www.php-fig.org/psr/psr-0/
|
||||||
* @see http://www.php-fig.org/psr/psr-4/
|
* @see https://www.php-fig.org/psr/psr-4/
|
||||||
*/
|
*/
|
||||||
class ClassLoader
|
class ClassLoader
|
||||||
{
|
{
|
||||||
|
@ -60,7 +60,7 @@ class ClassLoader
|
||||||
public function getPrefixes()
|
public function getPrefixes()
|
||||||
{
|
{
|
||||||
if (!empty($this->prefixesPsr0)) {
|
if (!empty($this->prefixesPsr0)) {
|
||||||
return call_user_func_array('array_merge', $this->prefixesPsr0);
|
return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
|
||||||
}
|
}
|
||||||
|
|
||||||
return array();
|
return array();
|
||||||
|
|
|
@ -0,0 +1,332 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
namespace Composer;
|
||||||
|
|
||||||
|
use Composer\Semver\VersionParser;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class InstalledVersions
|
||||||
|
{
|
||||||
|
private static $installed = array (
|
||||||
|
'root' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '1.0.0+no-version-set',
|
||||||
|
'version' => '1.0.0.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => NULL,
|
||||||
|
'name' => '__root__',
|
||||||
|
),
|
||||||
|
'versions' =>
|
||||||
|
array (
|
||||||
|
'__root__' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '1.0.0+no-version-set',
|
||||||
|
'version' => '1.0.0.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => NULL,
|
||||||
|
),
|
||||||
|
'bshaffer/oauth2-server-php' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => 'v1.11.1',
|
||||||
|
'version' => '1.11.1.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => '5a0c8000d4763b276919e2106f54eddda6bc50fa',
|
||||||
|
),
|
||||||
|
'ddeboer/imap' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '1.11.0',
|
||||||
|
'version' => '1.11.0.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => 'a089dfcb9d177f921eb5dadc8d4144a44dff22ee',
|
||||||
|
),
|
||||||
|
'exorus/php-mime-mail-parser' =>
|
||||||
|
array (
|
||||||
|
'replaced' =>
|
||||||
|
array (
|
||||||
|
0 => '*',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'matthiasmullie/minify' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '1.3.65',
|
||||||
|
'version' => '1.3.65.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => '227f19062451c55a797e0cc667ef983834e6580c',
|
||||||
|
),
|
||||||
|
'matthiasmullie/path-converter' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '1.1.3',
|
||||||
|
'version' => '1.1.3.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => 'e7d13b2c7e2f2268e1424aaed02085518afa02d9',
|
||||||
|
),
|
||||||
|
'messaged/php-mime-mail-parser' =>
|
||||||
|
array (
|
||||||
|
'replaced' =>
|
||||||
|
array (
|
||||||
|
0 => '*',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'mustangostang/spyc' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '0.6.3',
|
||||||
|
'version' => '0.6.3.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => '4627c838b16550b666d15aeae1e5289dd5b77da0',
|
||||||
|
),
|
||||||
|
'paragonie/random_compat' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => 'v9.99.100',
|
||||||
|
'version' => '9.99.100.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
|
||||||
|
),
|
||||||
|
'php-mime-mail-parser/php-mime-mail-parser' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '5.0.5',
|
||||||
|
'version' => '5.0.5.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => '27983433aabeccee832573c3c56e6a4855e57745',
|
||||||
|
),
|
||||||
|
'phpmailer/phpmailer' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => 'v6.2.0',
|
||||||
|
'version' => '6.2.0.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => 'e38888a75c070304ca5514197d4847a59a5c853f',
|
||||||
|
),
|
||||||
|
'robthree/twofactorauth' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '1.7.0',
|
||||||
|
'version' => '1.7.0.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => '37983bf675c5baca09d19d6705170489d0df0002',
|
||||||
|
),
|
||||||
|
'soundasleep/html2text' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '0.5.0',
|
||||||
|
'version' => '0.5.0.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => 'cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad',
|
||||||
|
),
|
||||||
|
'yubico/u2flib-server' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '1.0.2',
|
||||||
|
'version' => '1.0.2.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => '55d813acf68212ad2cadecde07551600d6971939',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static function getInstalledPackages()
|
||||||
|
{
|
||||||
|
return array_keys(self::$installed['versions']);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static function isInstalled($packageName)
|
||||||
|
{
|
||||||
|
return isset(self::$installed['versions'][$packageName]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static function satisfies(VersionParser $parser, $packageName, $constraint)
|
||||||
|
{
|
||||||
|
$constraint = $parser->parseConstraints($constraint);
|
||||||
|
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
|
||||||
|
|
||||||
|
return $provided->matches($constraint);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static function getVersionRanges($packageName)
|
||||||
|
{
|
||||||
|
if (!isset(self::$installed['versions'][$packageName])) {
|
||||||
|
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||||
|
}
|
||||||
|
|
||||||
|
$ranges = array();
|
||||||
|
if (isset(self::$installed['versions'][$packageName]['pretty_version'])) {
|
||||||
|
$ranges[] = self::$installed['versions'][$packageName]['pretty_version'];
|
||||||
|
}
|
||||||
|
if (array_key_exists('aliases', self::$installed['versions'][$packageName])) {
|
||||||
|
$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']);
|
||||||
|
}
|
||||||
|
if (array_key_exists('replaced', self::$installed['versions'][$packageName])) {
|
||||||
|
$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']);
|
||||||
|
}
|
||||||
|
if (array_key_exists('provided', self::$installed['versions'][$packageName])) {
|
||||||
|
$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return implode(' || ', $ranges);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static function getVersion($packageName)
|
||||||
|
{
|
||||||
|
if (!isset(self::$installed['versions'][$packageName])) {
|
||||||
|
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset(self::$installed['versions'][$packageName]['version'])) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::$installed['versions'][$packageName]['version'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static function getPrettyVersion($packageName)
|
||||||
|
{
|
||||||
|
if (!isset(self::$installed['versions'][$packageName])) {
|
||||||
|
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::$installed['versions'][$packageName]['pretty_version'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static function getReference($packageName)
|
||||||
|
{
|
||||||
|
if (!isset(self::$installed['versions'][$packageName])) {
|
||||||
|
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset(self::$installed['versions'][$packageName]['reference'])) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::$installed['versions'][$packageName]['reference'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static function getRootPackage()
|
||||||
|
{
|
||||||
|
return self::$installed['root'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static function getRawData()
|
||||||
|
{
|
||||||
|
return self::$installed;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static function reload($data)
|
||||||
|
{
|
||||||
|
self::$installed = $data;
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,6 +6,7 @@ $vendorDir = dirname(dirname(__FILE__));
|
||||||
$baseDir = dirname($vendorDir);
|
$baseDir = dirname($vendorDir);
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
|
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
||||||
'u2flib_server\\Error' => $vendorDir . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
|
'u2flib_server\\Error' => $vendorDir . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
|
||||||
'u2flib_server\\RegisterRequest' => $vendorDir . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
|
'u2flib_server\\RegisterRequest' => $vendorDir . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
|
||||||
'u2flib_server\\Registration' => $vendorDir . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
|
'u2flib_server\\Registration' => $vendorDir . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
|
||||||
|
|
|
@ -22,13 +22,15 @@ class ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b
|
||||||
return self::$loader;
|
return self::$loader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require __DIR__ . '/platform_check.php';
|
||||||
|
|
||||||
spl_autoload_register(array('ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b', 'loadClassLoader'), true, true);
|
spl_autoload_register(array('ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b', 'loadClassLoader'), true, true);
|
||||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||||
spl_autoload_unregister(array('ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b', 'loadClassLoader'));
|
spl_autoload_unregister(array('ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b', 'loadClassLoader'));
|
||||||
|
|
||||||
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
||||||
if ($useStaticLoader) {
|
if ($useStaticLoader) {
|
||||||
require_once __DIR__ . '/autoload_static.php';
|
require __DIR__ . '/autoload_static.php';
|
||||||
|
|
||||||
call_user_func(\Composer\Autoload\ComposerStaticInit873464e4bd965a3168f133248b1b218b::getInitializer($loader));
|
call_user_func(\Composer\Autoload\ComposerStaticInit873464e4bd965a3168f133248b1b218b::getInitializer($loader));
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -77,6 +77,7 @@ class ComposerStaticInit873464e4bd965a3168f133248b1b218b
|
||||||
);
|
);
|
||||||
|
|
||||||
public static $classMap = array (
|
public static $classMap = array (
|
||||||
|
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
||||||
'u2flib_server\\Error' => __DIR__ . '/..' . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
|
'u2flib_server\\Error' => __DIR__ . '/..' . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
|
||||||
'u2flib_server\\RegisterRequest' => __DIR__ . '/..' . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
|
'u2flib_server\\RegisterRequest' => __DIR__ . '/..' . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
|
||||||
'u2flib_server\\Registration' => __DIR__ . '/..' . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
|
'u2flib_server\\Registration' => __DIR__ . '/..' . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[
|
{
|
||||||
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "bshaffer/oauth2-server-php",
|
"name": "bshaffer/oauth2-server-php",
|
||||||
"version": "v1.11.1",
|
"version": "v1.11.1",
|
||||||
|
@ -57,38 +58,39 @@
|
||||||
"auth",
|
"auth",
|
||||||
"oauth",
|
"oauth",
|
||||||
"oauth2"
|
"oauth2"
|
||||||
]
|
],
|
||||||
|
"install-path": "../bshaffer/oauth2-server-php"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ddeboer/imap",
|
"name": "ddeboer/imap",
|
||||||
"version": "1.10.0",
|
"version": "1.11.0",
|
||||||
"version_normalized": "1.10.0.0",
|
"version_normalized": "1.11.0.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/ddeboer/imap.git",
|
"url": "https://github.com/ddeboer/imap.git",
|
||||||
"reference": "fc09dbf6fb9ba7317a95c719e45893efc4fe6bde"
|
"reference": "a089dfcb9d177f921eb5dadc8d4144a44dff22ee"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/ddeboer/imap/zipball/fc09dbf6fb9ba7317a95c719e45893efc4fe6bde",
|
"url": "https://api.github.com/repos/ddeboer/imap/zipball/a089dfcb9d177f921eb5dadc8d4144a44dff22ee",
|
||||||
"reference": "fc09dbf6fb9ba7317a95c719e45893efc4fe6bde",
|
"reference": "a089dfcb9d177f921eb5dadc8d4144a44dff22ee",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"ext-iconv": "*",
|
"ext-iconv": "*",
|
||||||
"ext-imap": "*",
|
"ext-imap": "*",
|
||||||
"ext-mbstring": "*",
|
"ext-mbstring": "*",
|
||||||
"php": "^7.2"
|
"php": "^7.3 || ^8.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"friendsofphp/php-cs-fixer": "^2.16",
|
"friendsofphp/php-cs-fixer": "^2.16.7",
|
||||||
"phpstan/phpstan": "^0.12",
|
"laminas/laminas-mail": "^2.12.3",
|
||||||
"phpstan/phpstan-phpunit": "^0.12",
|
"phpstan/phpstan": "^0.12.57",
|
||||||
"phpstan/phpstan-strict-rules": "^0.12",
|
"phpstan/phpstan-phpunit": "^0.12.16",
|
||||||
"phpunit/phpunit": "^8.5",
|
"phpstan/phpstan-strict-rules": "^0.12.5",
|
||||||
"zendframework/zend-mail": "^2.10"
|
"phpunit/phpunit": "^9.4.3"
|
||||||
},
|
},
|
||||||
"time": "2020-01-24T08:15:24+00:00",
|
"time": "2020-11-30T14:52:49+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"installation-source": "dist",
|
"installation-source": "dist",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
@ -119,21 +121,36 @@
|
||||||
"email",
|
"email",
|
||||||
"imap",
|
"imap",
|
||||||
"mail"
|
"mail"
|
||||||
]
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/ddeboer/imap/issues",
|
||||||
|
"source": "https://github.com/ddeboer/imap/tree/1.11.0"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/Slamdunk",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/ddeboer",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"install-path": "../ddeboer/imap"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "matthiasmullie/minify",
|
"name": "matthiasmullie/minify",
|
||||||
"version": "1.3.63",
|
"version": "1.3.65",
|
||||||
"version_normalized": "1.3.63.0",
|
"version_normalized": "1.3.65.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/matthiasmullie/minify.git",
|
"url": "https://github.com/matthiasmullie/minify.git",
|
||||||
"reference": "9ba1b459828adc13430f4dd6c49dae4950dc4117"
|
"reference": "227f19062451c55a797e0cc667ef983834e6580c"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/matthiasmullie/minify/zipball/9ba1b459828adc13430f4dd6c49dae4950dc4117",
|
"url": "https://api.github.com/repos/matthiasmullie/minify/zipball/227f19062451c55a797e0cc667ef983834e6580c",
|
||||||
"reference": "9ba1b459828adc13430f4dd6c49dae4950dc4117",
|
"reference": "227f19062451c55a797e0cc667ef983834e6580c",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -149,7 +166,7 @@
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"psr/cache-implementation": "Cache implementation to use with Minify::cache"
|
"psr/cache-implementation": "Cache implementation to use with Minify::cache"
|
||||||
},
|
},
|
||||||
"time": "2020-01-21T20:21:08+00:00",
|
"time": "2020-12-27T21:43:29+00:00",
|
||||||
"bin": [
|
"bin": [
|
||||||
"bin/minifycss",
|
"bin/minifycss",
|
||||||
"bin/minifyjs"
|
"bin/minifyjs"
|
||||||
|
@ -181,7 +198,26 @@
|
||||||
"javascript",
|
"javascript",
|
||||||
"minifier",
|
"minifier",
|
||||||
"minify"
|
"minify"
|
||||||
]
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/matthiasmullie/minify/issues",
|
||||||
|
"source": "https://github.com/matthiasmullie/minify/tree/1.3.65"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/[user1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/matthiasmullie] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g.",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/user2",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"install-path": "../matthiasmullie/minify"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "matthiasmullie/path-converter",
|
"name": "matthiasmullie/path-converter",
|
||||||
|
@ -232,7 +268,8 @@
|
||||||
"path",
|
"path",
|
||||||
"paths",
|
"paths",
|
||||||
"relative"
|
"relative"
|
||||||
]
|
],
|
||||||
|
"install-path": "../matthiasmullie/path-converter"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "mustangostang/spyc",
|
"name": "mustangostang/spyc",
|
||||||
|
@ -284,25 +321,26 @@
|
||||||
"spyc",
|
"spyc",
|
||||||
"yaml",
|
"yaml",
|
||||||
"yml"
|
"yml"
|
||||||
]
|
],
|
||||||
|
"install-path": "../mustangostang/spyc"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "paragonie/random_compat",
|
"name": "paragonie/random_compat",
|
||||||
"version": "v9.99.99",
|
"version": "v9.99.100",
|
||||||
"version_normalized": "9.99.99.0",
|
"version_normalized": "9.99.100.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/paragonie/random_compat.git",
|
"url": "https://github.com/paragonie/random_compat.git",
|
||||||
"reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
|
"reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
|
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
|
||||||
"reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
|
"reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7"
|
"php": ">= 7"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "4.*|5.*",
|
"phpunit/phpunit": "4.*|5.*",
|
||||||
|
@ -311,7 +349,7 @@
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
|
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
|
||||||
},
|
},
|
||||||
"time": "2018-07-02T15:55:56+00:00",
|
"time": "2020-10-15T08:29:30+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"installation-source": "dist",
|
"installation-source": "dist",
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
@ -331,7 +369,13 @@
|
||||||
"polyfill",
|
"polyfill",
|
||||||
"pseudorandom",
|
"pseudorandom",
|
||||||
"random"
|
"random"
|
||||||
]
|
],
|
||||||
|
"support": {
|
||||||
|
"email": "info@paragonie.com",
|
||||||
|
"issues": "https://github.com/paragonie/random_compat/issues",
|
||||||
|
"source": "https://github.com/paragonie/random_compat"
|
||||||
|
},
|
||||||
|
"install-path": "../paragonie/random_compat"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "php-mime-mail-parser/php-mime-mail-parser",
|
"name": "php-mime-mail-parser/php-mime-mail-parser",
|
||||||
|
@ -415,32 +459,37 @@
|
||||||
"mime",
|
"mime",
|
||||||
"parser",
|
"parser",
|
||||||
"php"
|
"php"
|
||||||
]
|
],
|
||||||
|
"install-path": "../php-mime-mail-parser/php-mime-mail-parser"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpmailer/phpmailer",
|
"name": "phpmailer/phpmailer",
|
||||||
"version": "v6.1.6",
|
"version": "v6.2.0",
|
||||||
"version_normalized": "6.1.6.0",
|
"version_normalized": "6.2.0.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/PHPMailer/PHPMailer.git",
|
"url": "https://github.com/PHPMailer/PHPMailer.git",
|
||||||
"reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3"
|
"reference": "e38888a75c070304ca5514197d4847a59a5c853f"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3",
|
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e38888a75c070304ca5514197d4847a59a5c853f",
|
||||||
"reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3",
|
"reference": "e38888a75c070304ca5514197d4847a59a5c853f",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"ext-ctype": "*",
|
"ext-ctype": "*",
|
||||||
"ext-filter": "*",
|
"ext-filter": "*",
|
||||||
|
"ext-hash": "*",
|
||||||
"php": ">=5.5.0"
|
"php": ">=5.5.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
|
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
|
||||||
"doctrine/annotations": "^1.2",
|
"doctrine/annotations": "^1.2",
|
||||||
"friendsofphp/php-cs-fixer": "^2.2",
|
"phpcompatibility/php-compatibility": "^9.3.5",
|
||||||
"phpunit/phpunit": "^4.8 || ^5.7"
|
"roave/security-advisories": "dev-latest",
|
||||||
|
"squizlabs/php_codesniffer": "^3.5.6",
|
||||||
|
"yoast/phpunit-polyfills": "^0.2.0"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"ext-mbstring": "Needed to send email in multibyte encoding charset",
|
"ext-mbstring": "Needed to send email in multibyte encoding charset",
|
||||||
|
@ -450,7 +499,7 @@
|
||||||
"stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
|
"stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
|
||||||
"symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
|
"symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
|
||||||
},
|
},
|
||||||
"time": "2020-05-27T12:24:03+00:00",
|
"time": "2020-11-25T15:24:57+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"installation-source": "dist",
|
"installation-source": "dist",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
@ -480,12 +529,17 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
|
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/PHPMailer/PHPMailer/issues",
|
||||||
|
"source": "https://github.com/PHPMailer/PHPMailer/tree/v6.2.0"
|
||||||
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"url": "https://github.com/synchro",
|
"url": "https://github.com/Synchro",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"install-path": "../phpmailer/phpmailer"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "robthree/twofactorauth",
|
"name": "robthree/twofactorauth",
|
||||||
|
@ -538,7 +592,8 @@
|
||||||
"authy",
|
"authy",
|
||||||
"php",
|
"php",
|
||||||
"tfa"
|
"tfa"
|
||||||
]
|
],
|
||||||
|
"install-path": "../robthree/twofactorauth"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "soundasleep/html2text",
|
"name": "soundasleep/html2text",
|
||||||
|
@ -590,7 +645,8 @@
|
||||||
"html",
|
"html",
|
||||||
"php",
|
"php",
|
||||||
"text"
|
"text"
|
||||||
]
|
],
|
||||||
|
"install-path": "../soundasleep/html2text"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "yubico/u2flib-server",
|
"name": "yubico/u2flib-server",
|
||||||
|
@ -629,6 +685,10 @@
|
||||||
"BSD-2-Clause"
|
"BSD-2-Clause"
|
||||||
],
|
],
|
||||||
"description": "Library for U2F implementation",
|
"description": "Library for U2F implementation",
|
||||||
"homepage": "https://developers.yubico.com/php-u2flib-server"
|
"homepage": "https://developers.yubico.com/php-u2flib-server",
|
||||||
|
"install-path": "../yubico/u2flib-server"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"dev-package-names": []
|
||||||
}
|
}
|
||||||
]
|
|
||||||
|
|
|
@ -0,0 +1,137 @@
|
||||||
|
<?php return array (
|
||||||
|
'root' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '1.0.0+no-version-set',
|
||||||
|
'version' => '1.0.0.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => NULL,
|
||||||
|
'name' => '__root__',
|
||||||
|
),
|
||||||
|
'versions' =>
|
||||||
|
array (
|
||||||
|
'__root__' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '1.0.0+no-version-set',
|
||||||
|
'version' => '1.0.0.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => NULL,
|
||||||
|
),
|
||||||
|
'bshaffer/oauth2-server-php' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => 'v1.11.1',
|
||||||
|
'version' => '1.11.1.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => '5a0c8000d4763b276919e2106f54eddda6bc50fa',
|
||||||
|
),
|
||||||
|
'ddeboer/imap' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '1.11.0',
|
||||||
|
'version' => '1.11.0.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => 'a089dfcb9d177f921eb5dadc8d4144a44dff22ee',
|
||||||
|
),
|
||||||
|
'exorus/php-mime-mail-parser' =>
|
||||||
|
array (
|
||||||
|
'replaced' =>
|
||||||
|
array (
|
||||||
|
0 => '*',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'matthiasmullie/minify' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '1.3.65',
|
||||||
|
'version' => '1.3.65.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => '227f19062451c55a797e0cc667ef983834e6580c',
|
||||||
|
),
|
||||||
|
'matthiasmullie/path-converter' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '1.1.3',
|
||||||
|
'version' => '1.1.3.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => 'e7d13b2c7e2f2268e1424aaed02085518afa02d9',
|
||||||
|
),
|
||||||
|
'messaged/php-mime-mail-parser' =>
|
||||||
|
array (
|
||||||
|
'replaced' =>
|
||||||
|
array (
|
||||||
|
0 => '*',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'mustangostang/spyc' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '0.6.3',
|
||||||
|
'version' => '0.6.3.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => '4627c838b16550b666d15aeae1e5289dd5b77da0',
|
||||||
|
),
|
||||||
|
'paragonie/random_compat' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => 'v9.99.100',
|
||||||
|
'version' => '9.99.100.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
|
||||||
|
),
|
||||||
|
'php-mime-mail-parser/php-mime-mail-parser' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '5.0.5',
|
||||||
|
'version' => '5.0.5.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => '27983433aabeccee832573c3c56e6a4855e57745',
|
||||||
|
),
|
||||||
|
'phpmailer/phpmailer' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => 'v6.2.0',
|
||||||
|
'version' => '6.2.0.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => 'e38888a75c070304ca5514197d4847a59a5c853f',
|
||||||
|
),
|
||||||
|
'robthree/twofactorauth' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '1.7.0',
|
||||||
|
'version' => '1.7.0.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => '37983bf675c5baca09d19d6705170489d0df0002',
|
||||||
|
),
|
||||||
|
'soundasleep/html2text' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '0.5.0',
|
||||||
|
'version' => '0.5.0.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => 'cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad',
|
||||||
|
),
|
||||||
|
'yubico/u2flib-server' =>
|
||||||
|
array (
|
||||||
|
'pretty_version' => '1.0.2',
|
||||||
|
'version' => '1.0.2.0',
|
||||||
|
'aliases' =>
|
||||||
|
array (
|
||||||
|
),
|
||||||
|
'reference' => '55d813acf68212ad2cadecde07551600d6971939',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// platform_check.php @generated by Composer
|
||||||
|
|
||||||
|
$issues = array();
|
||||||
|
|
||||||
|
if (!(PHP_VERSION_ID >= 70300)) {
|
||||||
|
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.3.0". You are running ' . PHP_VERSION . '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($issues) {
|
||||||
|
if (!headers_sent()) {
|
||||||
|
header('HTTP/1.1 500 Internal Server Error');
|
||||||
|
}
|
||||||
|
if (!ini_get('display_errors')) {
|
||||||
|
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
|
||||||
|
fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
|
||||||
|
} elseif (!headers_sent()) {
|
||||||
|
echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
trigger_error(
|
||||||
|
'Composer detected issues in your platform: ' . implode(' ', $issues),
|
||||||
|
E_USER_ERROR
|
||||||
|
);
|
||||||
|
}
|
|
@ -1,5 +1,46 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [1.11.0](https://github.com/ddeboer/imap/tree/1.11.0) (2020-11-30)
|
||||||
|
|
||||||
|
[Full Changelog](https://github.com/ddeboer/imap/compare/1.10.1...1.11.0)
|
||||||
|
|
||||||
|
**Implemented enhancements:**
|
||||||
|
|
||||||
|
- PHP 8 Compatibility [\#481](https://github.com/ddeboer/imap/issues/481)
|
||||||
|
- \[GA\] PHP 8 compatibility fix [\#483](https://github.com/ddeboer/imap/pull/483) ([Slamdunk](https://github.com/Slamdunk))
|
||||||
|
- Support PHP 8.0, require PHP 7.3 [\#482](https://github.com/ddeboer/imap/pull/482) ([Slamdunk](https://github.com/Slamdunk))
|
||||||
|
|
||||||
|
**Fixed bugs:**
|
||||||
|
|
||||||
|
- Fix: Outlook date format [\#480](https://github.com/ddeboer/imap/pull/480) ([gajosadrian](https://github.com/gajosadrian))
|
||||||
|
|
||||||
|
**Closed issues:**
|
||||||
|
|
||||||
|
- Closing Connection [\#479](https://github.com/ddeboer/imap/issues/479)
|
||||||
|
- Problem with charset of message part / DataPartInfo [\#475](https://github.com/ddeboer/imap/issues/475)
|
||||||
|
- Unsupported charset "X-UNKNOWN" [\#425](https://github.com/ddeboer/imap/issues/425)
|
||||||
|
|
||||||
|
## [1.10.1](https://github.com/ddeboer/imap/tree/1.10.1) (2020-08-26)
|
||||||
|
|
||||||
|
[Full Changelog](https://github.com/ddeboer/imap/compare/1.10.0...1.10.1)
|
||||||
|
|
||||||
|
**Fixed bugs:**
|
||||||
|
|
||||||
|
- getThread and getMessageSequence not using with the same id [\#469](https://github.com/ddeboer/imap/issues/469)
|
||||||
|
- imap\_thread: use absolude ids [\#474](https://github.com/ddeboer/imap/pull/474) ([Slamdunk](https://github.com/Slamdunk))
|
||||||
|
|
||||||
|
**Closed issues:**
|
||||||
|
|
||||||
|
- How to get a message by Message-ID [\#472](https://github.com/ddeboer/imap/issues/472)
|
||||||
|
- Mail with e-sign [\#467](https://github.com/ddeboer/imap/issues/467)
|
||||||
|
- Duplicate method definition in MessageInterface [\#455](https://github.com/ddeboer/imap/issues/455)
|
||||||
|
- Missed errors in search method [\#444](https://github.com/ddeboer/imap/issues/444)
|
||||||
|
|
||||||
|
**Merged pull requests:**
|
||||||
|
|
||||||
|
- Subtype not always present [\#473](https://github.com/ddeboer/imap/pull/473) ([Piskvor](https://github.com/Piskvor))
|
||||||
|
- Improved error handling for message search method [\#445](https://github.com/ddeboer/imap/pull/445) ([ikarol](https://github.com/ikarol))
|
||||||
|
|
||||||
## [1.10.0](https://github.com/ddeboer/imap/tree/1.10.0) (2020-01-24)
|
## [1.10.0](https://github.com/ddeboer/imap/tree/1.10.0) (2020-01-24)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/ddeboer/imap/compare/1.9.0...1.10.0)
|
[Full Changelog](https://github.com/ddeboer/imap/compare/1.9.0...1.10.0)
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
# IMAP library
|
# IMAP library
|
||||||
|
|
||||||
[![Build Status](https://travis-ci.org/ddeboer/imap.svg?branch=master)](https://travis-ci.org/ddeboer/imap)
|
[![Latest Stable Version](https://img.shields.io/packagist/v/ddeboer/imap.svg)](https://packagist.org/packages/ddeboer/imap)
|
||||||
[![Code Coverage](https://scrutinizer-ci.com/g/ddeboer/imap/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/ddeboer/imap/?branch=master)
|
[![Downloads](https://img.shields.io/packagist/dt/ddeboer/imap.svg)](https://packagist.org/packages/ddeboer/imap)
|
||||||
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/ddeboer/imap/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/ddeboer/imap/?branch=master)
|
[![Integrate](https://github.com/ddeboer/imap/workflows/Integrate/badge.svg?branch=master)](https://github.com/ddeboer/imap/actions)
|
||||||
[![Latest Stable Version](https://poser.pugx.org/ddeboer/imap/v/stable.svg)](https://packagist.org/packages/ddeboer/imap)
|
[![Code Coverage](https://codecov.io/gh/ddeboer/imap/coverage.svg?branch=master)](https://codecov.io/gh/ddeboer/imap?branch=master)
|
||||||
[![Total Downloads](https://poser.pugx.org/ddeboer/imap/downloads.png)](https://packagist.org/packages/ddeboer/imap)
|
|
||||||
|
|
||||||
A PHP 7.2+ library to read and process e-mails over IMAP.
|
A PHP 7.3+ library to read and process e-mails over IMAP.
|
||||||
|
|
||||||
This library requires [IMAP](https://secure.php.net/manual/en/book.imap.php),
|
This library requires [IMAP](https://secure.php.net/manual/en/book.imap.php),
|
||||||
[iconv](https://secure.php.net/manual/en/book.iconv.php) and
|
[iconv](https://secure.php.net/manual/en/book.iconv.php) and
|
||||||
|
|
|
@ -22,18 +22,23 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.2",
|
"php": "^7.3 || ^8.0",
|
||||||
"ext-iconv": "*",
|
"ext-iconv": "*",
|
||||||
"ext-imap": "*",
|
"ext-imap": "*",
|
||||||
"ext-mbstring": "*"
|
"ext-mbstring": "*"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"friendsofphp/php-cs-fixer": "^2.16",
|
"friendsofphp/php-cs-fixer": "^2.16.7",
|
||||||
"phpstan/phpstan": "^0.12",
|
"laminas/laminas-mail": "^2.12.3",
|
||||||
"phpstan/phpstan-phpunit": "^0.12",
|
"phpstan/phpstan": "^0.12.57",
|
||||||
"phpstan/phpstan-strict-rules": "^0.12",
|
"phpstan/phpstan-phpunit": "^0.12.16",
|
||||||
"phpunit/phpunit": "^8.5",
|
"phpstan/phpstan-strict-rules": "^0.12.5",
|
||||||
"zendframework/zend-mail": "^2.10"
|
"phpunit/phpunit": "^9.4.3"
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"platform": {
|
||||||
|
"php": "7.3"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
|
|
|
@ -228,6 +228,7 @@ final class Connection implements ConnectionInterface
|
||||||
|
|
||||||
foreach ($mailboxesInfo as $mailboxInfo) {
|
foreach ($mailboxesInfo as $mailboxInfo) {
|
||||||
$name = \mb_convert_encoding(\str_replace($this->server, '', $mailboxInfo->name), 'UTF-8', 'UTF7-IMAP');
|
$name = \mb_convert_encoding(\str_replace($this->server, '', $mailboxInfo->name), 'UTF-8', 'UTF7-IMAP');
|
||||||
|
\assert(\is_string($name));
|
||||||
$this->mailboxNames[$name] = $mailboxInfo;
|
$this->mailboxNames[$name] = $mailboxInfo;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -154,6 +154,10 @@ final class Mailbox implements MailboxInterface
|
||||||
}
|
}
|
||||||
$query = $search->toString();
|
$query = $search->toString();
|
||||||
|
|
||||||
|
if (\PHP_VERSION_ID < 80000) {
|
||||||
|
$descending = (int) $descending;
|
||||||
|
}
|
||||||
|
|
||||||
// We need to clear the stack to know whether imap_last_error()
|
// We need to clear the stack to know whether imap_last_error()
|
||||||
// is related to this imap_search
|
// is related to this imap_search
|
||||||
\imap_errors();
|
\imap_errors();
|
||||||
|
@ -162,7 +166,7 @@ final class Mailbox implements MailboxInterface
|
||||||
$params = [
|
$params = [
|
||||||
$this->resource->getStream(),
|
$this->resource->getStream(),
|
||||||
$sortCriteria,
|
$sortCriteria,
|
||||||
$descending ? 1 : 0,
|
$descending,
|
||||||
\SE_UID,
|
\SE_UID,
|
||||||
$query,
|
$query,
|
||||||
];
|
];
|
||||||
|
@ -181,11 +185,13 @@ final class Mailbox implements MailboxInterface
|
||||||
}
|
}
|
||||||
$messageNumbers = \imap_search(...$params);
|
$messageNumbers = \imap_search(...$params);
|
||||||
}
|
}
|
||||||
if (false === $messageNumbers) {
|
|
||||||
if (false !== \imap_last_error()) {
|
if (false !== \imap_last_error()) {
|
||||||
throw new InvalidSearchCriteriaException(\sprintf('Invalid search criteria [%s]', $query));
|
// this way all errors occurred during search will be reported
|
||||||
|
throw new InvalidSearchCriteriaException(
|
||||||
|
\sprintf('Invalid search criteria [%s]', $query)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
if (false === $messageNumbers) {
|
||||||
// imap_search can also return false
|
// imap_search can also return false
|
||||||
$messageNumbers = [];
|
$messageNumbers = [];
|
||||||
}
|
}
|
||||||
|
@ -203,13 +209,14 @@ final class Mailbox implements MailboxInterface
|
||||||
\imap_errors();
|
\imap_errors();
|
||||||
|
|
||||||
$overview = \imap_fetch_overview($this->resource->getStream(), $sequence, \FT_UID);
|
$overview = \imap_fetch_overview($this->resource->getStream(), $sequence, \FT_UID);
|
||||||
|
if (false !== \imap_last_error()) {
|
||||||
|
throw new InvalidSearchCriteriaException(
|
||||||
|
\sprintf('Invalid sequence [%s]', $sequence)
|
||||||
|
);
|
||||||
|
}
|
||||||
if (\is_array($overview) && [] !== $overview) {
|
if (\is_array($overview) && [] !== $overview) {
|
||||||
$messageNumbers = \array_column($overview, 'uid');
|
$messageNumbers = \array_column($overview, 'uid');
|
||||||
} else {
|
} else {
|
||||||
if (false !== \imap_last_error()) {
|
|
||||||
throw new InvalidSearchCriteriaException(\sprintf('Invalid sequence [%s]', $sequence));
|
|
||||||
}
|
|
||||||
|
|
||||||
$messageNumbers = [];
|
$messageNumbers = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -264,7 +271,7 @@ final class Mailbox implements MailboxInterface
|
||||||
});
|
});
|
||||||
|
|
||||||
/** @var array|false $tree */
|
/** @var array|false $tree */
|
||||||
$tree = \imap_thread($this->resource->getStream());
|
$tree = \imap_thread($this->resource->getStream(), \SE_UID);
|
||||||
|
|
||||||
\restore_error_handler();
|
\restore_error_handler();
|
||||||
|
|
||||||
|
|
|
@ -109,7 +109,15 @@ final class Message extends Message\AbstractMessage implements MessageInterface
|
||||||
}
|
}
|
||||||
$this->messageNumberVerified = true;
|
$this->messageNumberVerified = true;
|
||||||
|
|
||||||
|
$msgno = null;
|
||||||
|
\set_error_handler(static function (): bool {
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
$msgno = \imap_msgno($this->resource->getStream(), $messageNumber);
|
$msgno = \imap_msgno($this->resource->getStream(), $messageNumber);
|
||||||
|
|
||||||
|
\restore_error_handler();
|
||||||
|
|
||||||
if (\is_numeric($msgno) && $msgno > 0) {
|
if (\is_numeric($msgno) && $msgno > 0) {
|
||||||
$this->imapMsgNo = $msgno;
|
$this->imapMsgNo = $msgno;
|
||||||
|
|
||||||
|
@ -306,7 +314,7 @@ final class Message extends Message\AbstractMessage implements MessageInterface
|
||||||
// 'deleted' header changed, force to reload headers, would be better to set deleted flag to true on header
|
// 'deleted' header changed, force to reload headers, would be better to set deleted flag to true on header
|
||||||
$this->clearHeaders();
|
$this->clearHeaders();
|
||||||
|
|
||||||
if (!\imap_delete($this->resource->getStream(), $this->getNumber(), \FT_UID)) {
|
if (!\imap_delete($this->resource->getStream(), (string) $this->getNumber(), \FT_UID)) {
|
||||||
throw new MessageDeleteException(\sprintf('Message "%s" cannot be deleted', $this->getNumber()));
|
throw new MessageDeleteException(\sprintf('Message "%s" cannot be deleted', $this->getNumber()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -320,7 +328,7 @@ final class Message extends Message\AbstractMessage implements MessageInterface
|
||||||
{
|
{
|
||||||
// 'deleted' header changed, force to reload headers, would be better to set deleted flag to false on header
|
// 'deleted' header changed, force to reload headers, would be better to set deleted flag to false on header
|
||||||
$this->clearHeaders();
|
$this->clearHeaders();
|
||||||
if (!\imap_undelete($this->resource->getStream(), $this->getNumber(), \FT_UID)) {
|
if (!\imap_undelete($this->resource->getStream(), (string) $this->getNumber(), \FT_UID)) {
|
||||||
throw new MessageUndeleteException(\sprintf('Message "%s" cannot be undeleted', $this->getNumber()));
|
throw new MessageUndeleteException(\sprintf('Message "%s" cannot be undeleted', $this->getNumber()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,6 +113,7 @@ abstract class AbstractMessage extends AbstractPart
|
||||||
$alteredValue = \str_replace(',', '', $alteredValue);
|
$alteredValue = \str_replace(',', '', $alteredValue);
|
||||||
$alteredValue = (string) \preg_replace('/^[a-zA-Z]+ ?/', '', $alteredValue);
|
$alteredValue = (string) \preg_replace('/^[a-zA-Z]+ ?/', '', $alteredValue);
|
||||||
$alteredValue = (string) \preg_replace('/\(.*\)/', '', $alteredValue);
|
$alteredValue = (string) \preg_replace('/\(.*\)/', '', $alteredValue);
|
||||||
|
$alteredValue = (string) \preg_replace('/\<.*\>/', '', $alteredValue);
|
||||||
$alteredValue = (string) \preg_replace('/\bUT\b/', 'UTC', $alteredValue);
|
$alteredValue = (string) \preg_replace('/\bUT\b/', 'UTC', $alteredValue);
|
||||||
if (0 === \preg_match('/\d\d:\d\d:\d\d.* [\+\-]\d\d:?\d\d/', $alteredValue)) {
|
if (0 === \preg_match('/\d\d:\d\d:\d\d.* [\+\-]\d\d:?\d\d/', $alteredValue)) {
|
||||||
$alteredValue .= ' +0000';
|
$alteredValue .= ' +0000';
|
||||||
|
|
|
@ -471,9 +471,11 @@ abstract class AbstractPart implements PartInterface
|
||||||
|
|
||||||
$this->type = self::$typesMap[$this->structure->type] ?? self::TYPE_UNKNOWN;
|
$this->type = self::$typesMap[$this->structure->type] ?? self::TYPE_UNKNOWN;
|
||||||
|
|
||||||
// In our context, \ENCOTHER is as useful as an uknown encoding
|
// In our context, \ENCOTHER is as useful as an unknown encoding
|
||||||
$this->encoding = self::$encodingsMap[$this->structure->encoding] ?? self::ENCODING_UNKNOWN;
|
$this->encoding = self::$encodingsMap[$this->structure->encoding] ?? self::ENCODING_UNKNOWN;
|
||||||
|
if (isset($this->structure->subtype)) {
|
||||||
$this->subtype = $this->structure->subtype;
|
$this->subtype = $this->structure->subtype;
|
||||||
|
}
|
||||||
|
|
||||||
if (isset($this->structure->bytes)) {
|
if (isset($this->structure->bytes)) {
|
||||||
$this->bytes = $this->structure->bytes;
|
$this->bytes = $this->structure->bytes;
|
||||||
|
|
|
@ -310,7 +310,13 @@ final class Transcoder
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$decodedText = '';
|
||||||
|
|
||||||
|
try {
|
||||||
$decodedText = \mb_convert_encoding($text, 'UTF-8', $fromCharset);
|
$decodedText = \mb_convert_encoding($text, 'UTF-8', $fromCharset);
|
||||||
|
} catch (\Error $error) {
|
||||||
|
$errorMessage = $error->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
\restore_error_handler();
|
\restore_error_handler();
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
# These are supported funding model platforms
|
||||||
|
|
||||||
|
github: [matthiasmullie] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||||
|
patreon: # Replace with a single Patreon username
|
||||||
|
open_collective: # Replace with a single Open Collective username
|
||||||
|
ko_fi: # Replace with a single Ko-fi username
|
||||||
|
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||||
|
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||||
|
liberapay: # Replace with a single Liberapay username
|
||||||
|
issuehunt: # Replace with a single IssueHunt username
|
||||||
|
otechie: # Replace with a single Otechie username
|
||||||
|
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
|
@ -6,7 +6,7 @@ WORKDIR /var/www
|
||||||
|
|
||||||
RUN apt-get update
|
RUN apt-get update
|
||||||
RUN apt-get install -y zip unzip zlib1g-dev
|
RUN apt-get install -y zip unzip zlib1g-dev
|
||||||
RUN docker-php-ext-install zip
|
RUN if [[ `php-config --vernum` -ge 73000 ]]; then docker-php-ext-install zip; fi
|
||||||
RUN docker-php-ext-install pcntl
|
RUN docker-php-ext-install pcntl
|
||||||
RUN curl -sS https://getcomposer.org/installer | php
|
RUN curl -sS https://getcomposer.org/installer | php
|
||||||
RUN mv composer.phar /usr/local/bin/composer
|
RUN mv composer.phar /usr/local/bin/composer
|
||||||
|
|
|
@ -9,6 +9,21 @@ services:
|
||||||
- ./data:/var/www/data
|
- ./data:/var/www/data
|
||||||
- ./tests:/var/www/tests
|
- ./tests:/var/www/tests
|
||||||
- ./phpunit.xml.dist:/var/www/phpunit.xml.dist
|
- ./phpunit.xml.dist:/var/www/phpunit.xml.dist
|
||||||
|
'8.0':
|
||||||
|
extends: php
|
||||||
|
build:
|
||||||
|
args:
|
||||||
|
version: 8.0-cli
|
||||||
|
'7.4':
|
||||||
|
extends: php
|
||||||
|
build:
|
||||||
|
args:
|
||||||
|
version: 7.4-cli
|
||||||
|
'7.3':
|
||||||
|
extends: php
|
||||||
|
build:
|
||||||
|
args:
|
||||||
|
version: 7.3-cli
|
||||||
'7.2':
|
'7.2':
|
||||||
extends: php
|
extends: php
|
||||||
build:
|
build:
|
||||||
|
|
|
@ -216,7 +216,7 @@ class CSS extends Minify
|
||||||
|
|
||||||
// grab referenced file & minify it (which may include importing
|
// grab referenced file & minify it (which may include importing
|
||||||
// yet other @import statements recursively)
|
// yet other @import statements recursively)
|
||||||
$minifier = new static($importPath);
|
$minifier = new self($importPath);
|
||||||
$minifier->setMaxImportSize($this->maxImportSize);
|
$minifier->setMaxImportSize($this->maxImportSize);
|
||||||
$minifier->setImportExtensions($this->importExtensions);
|
$minifier->setImportExtensions($this->importExtensions);
|
||||||
$importContent = $minifier->execute($source, $parents);
|
$importContent = $minifier->execute($source, $parents);
|
||||||
|
@ -307,7 +307,8 @@ class CSS extends Minify
|
||||||
*/
|
*/
|
||||||
$this->extractStrings();
|
$this->extractStrings();
|
||||||
$this->stripComments();
|
$this->stripComments();
|
||||||
$this->extractCalcs();
|
$this->extractMath();
|
||||||
|
$this->extractCustomProperties();
|
||||||
$css = $this->replace($css);
|
$css = $this->replace($css);
|
||||||
|
|
||||||
$css = $this->stripWhitespace($css);
|
$css = $this->stripWhitespace($css);
|
||||||
|
@ -678,19 +679,29 @@ class CSS extends Minify
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replace all `calc()` occurrences.
|
* Replace all occurrences of functions that may contain math, where
|
||||||
|
* whitespace around operators needs to be preserved (e.g. calc, clamp)
|
||||||
*/
|
*/
|
||||||
protected function extractCalcs()
|
protected function extractMath()
|
||||||
{
|
{
|
||||||
|
$functions = array('calc', 'clamp', 'min', 'max');
|
||||||
|
$pattern = '/('. implode('|', $functions) .')(\(.+?)(?=$|;|})/m';
|
||||||
|
|
||||||
// PHP only supports $this inside anonymous functions since 5.4
|
// PHP only supports $this inside anonymous functions since 5.4
|
||||||
$minifier = $this;
|
$minifier = $this;
|
||||||
$callback = function ($match) use ($minifier) {
|
$callback = function ($match) use ($minifier, $pattern, &$callback) {
|
||||||
$length = strlen($match[1]);
|
$function = $match[1];
|
||||||
|
$length = strlen($match[2]);
|
||||||
$expr = '';
|
$expr = '';
|
||||||
$opened = 0;
|
$opened = 0;
|
||||||
|
|
||||||
|
// the regular expression for extracting math has 1 significant problem:
|
||||||
|
// it can't determine the correct closing parenthesis...
|
||||||
|
// instead, it'll match a larger portion of code to where it's certain that
|
||||||
|
// the calc() musts have ended, and we'll figure out which is the correct
|
||||||
|
// closing parenthesis here, by counting how many have opened
|
||||||
for ($i = 0; $i < $length; $i++) {
|
for ($i = 0; $i < $length; $i++) {
|
||||||
$char = $match[1][$i];
|
$char = $match[2][$i];
|
||||||
$expr .= $char;
|
$expr .= $char;
|
||||||
if ($char === '(') {
|
if ($char === '(') {
|
||||||
$opened++;
|
$opened++;
|
||||||
|
@ -698,18 +709,41 @@ class CSS extends Minify
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$rest = str_replace($expr, '', $match[1]);
|
|
||||||
$expr = trim(substr($expr, 1, -1));
|
|
||||||
|
|
||||||
|
// now that we've figured out where the calc() starts and ends, extract it
|
||||||
$count = count($minifier->extracted);
|
$count = count($minifier->extracted);
|
||||||
$placeholder = 'calc('.$count.')';
|
$placeholder = 'math('.$count.')';
|
||||||
$minifier->extracted[$placeholder] = 'calc('.$expr.')';
|
$minifier->extracted[$placeholder] = $function.'('.trim(substr($expr, 1, -1)).')';
|
||||||
|
|
||||||
|
// and since we've captured more code than required, we may have some leftover
|
||||||
|
// calc() in here too - go recursive on the remaining but of code to go figure
|
||||||
|
// that out and extract what is needed
|
||||||
|
$rest = str_replace($function.$expr, '', $match[0]);
|
||||||
|
$rest = preg_replace_callback($pattern, $callback, $rest);
|
||||||
|
|
||||||
return $placeholder.$rest;
|
return $placeholder.$rest;
|
||||||
};
|
};
|
||||||
|
|
||||||
$this->registerPattern('/calc(\(.+?)(?=$|;|}|calc\()/', $callback);
|
$this->registerPattern($pattern, $callback);
|
||||||
$this->registerPattern('/calc(\(.+?)(?=$|;|}|calc\()/m', $callback);
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replace custom properties, whose values may be used in scenarios where
|
||||||
|
* we wouldn't want them to be minified (e.g. inside calc)
|
||||||
|
*/
|
||||||
|
protected function extractCustomProperties()
|
||||||
|
{
|
||||||
|
// PHP only supports $this inside anonymous functions since 5.4
|
||||||
|
$minifier = $this;
|
||||||
|
$this->registerPattern(
|
||||||
|
'/(?<=^|[;}])(--[^:;{}"\'\s]+)\s*:([^;{}]+)/m',
|
||||||
|
function ($match) use ($minifier) {
|
||||||
|
$placeholder = '--custom-'. count($minifier->extracted) . ':0';
|
||||||
|
$minifier->extracted[$placeholder] = $match[1] .':'. trim($match[2]);
|
||||||
|
return $placeholder;
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
"source": "https://github.com/paragonie/random_compat"
|
"source": "https://github.com/paragonie/random_compat"
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7"
|
"php": ">= 7"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"vimeo/psalm": "^1",
|
"vimeo/psalm": "^1",
|
||||||
|
|
|
@ -167,15 +167,9 @@ Build status: [![Build Status](https://travis-ci.org/PHPMailer/PHPMailer.svg)](h
|
||||||
If this isn't passing, is there something you can do to help?
|
If this isn't passing, is there something you can do to help?
|
||||||
|
|
||||||
## Security
|
## Security
|
||||||
Please disclose any vulnerabilities found responsibly - report any security problems found to the maintainers privately.
|
Please disclose any vulnerabilities found responsibly – report security issues to the maintainers privately.
|
||||||
|
|
||||||
PHPMailer versions prior to 5.2.22 (released January 9th 2017) have a local file disclosure vulnerability, [CVE-2017-5223](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-5223). If content passed into `msgHTML()` is sourced from unfiltered user input, relative paths can map to absolute local file paths and added as attachments. Also note that `addAttachment` (just like `file_get_contents`, `passthru`, `unlink`, etc) should not be passed user-sourced params either! Reported by Yongxiang Li of Asiasecurity.
|
See [SECURITY](https://github.com/PHPMailer/PHPMailer/tree/master/SECURITY.md) for details on security issues.
|
||||||
|
|
||||||
PHPMailer versions prior to 5.2.20 (released December 28th 2016) are vulnerable to [CVE-2016-10045](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10045) a remote code execution vulnerability, responsibly reported by [Dawid Golunski](https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10045-Vuln-Patch-Bypass.html), and patched by Paul Buonopane (@Zenexer).
|
|
||||||
|
|
||||||
PHPMailer versions prior to 5.2.18 (released December 2016) are vulnerable to [CVE-2016-10033](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10033) a critical remote code execution vulnerability, responsibly reported by [Dawid Golunski](http://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html).
|
|
||||||
|
|
||||||
See [SECURITY](https://github.com/PHPMailer/PHPMailer/tree/master/SECURITY.md) for more detail on security issues.
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
Please submit bug reports, suggestions and pull requests to the [GitHub issue tracker](https://github.com/PHPMailer/PHPMailer/issues).
|
Please submit bug reports, suggestions and pull requests to the [GitHub issue tracker](https://github.com/PHPMailer/PHPMailer/issues).
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
6.1.6
|
6.2.0
|
|
@ -21,26 +21,30 @@
|
||||||
],
|
],
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"url": "https://github.com/synchro",
|
"url": "https://github.com/Synchro",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=5.5.0",
|
"php": ">=5.5.0",
|
||||||
"ext-ctype": "*",
|
"ext-ctype": "*",
|
||||||
"ext-filter": "*"
|
"ext-filter": "*",
|
||||||
|
"ext-hash": "*"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"friendsofphp/php-cs-fixer": "^2.2",
|
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
|
||||||
"phpunit/phpunit": "^4.8 || ^5.7",
|
"doctrine/annotations": "^1.2",
|
||||||
"doctrine/annotations": "^1.2"
|
"phpcompatibility/php-compatibility": "^9.3.5",
|
||||||
|
"roave/security-advisories": "dev-latest",
|
||||||
|
"squizlabs/php_codesniffer": "^3.5.6",
|
||||||
|
"yoast/phpunit-polyfills": "^0.2.0"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"psr/log": "For optional PSR-3 debug logging",
|
|
||||||
"league/oauth2-google": "Needed for Google XOAUTH2 authentication",
|
|
||||||
"hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
|
|
||||||
"stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
|
|
||||||
"ext-mbstring": "Needed to send email in multibyte encoding charset",
|
"ext-mbstring": "Needed to send email in multibyte encoding charset",
|
||||||
|
"hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
|
||||||
|
"league/oauth2-google": "Needed for Google XOAUTH2 authentication",
|
||||||
|
"psr/log": "For optional PSR-3 debug logging",
|
||||||
|
"stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
|
||||||
"symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
|
"symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHPMailer - PHP email creation and transport class.
|
* PHPMailer - PHP email creation and transport class.
|
||||||
* PHP Version 5.5
|
* PHP Version 5.5
|
||||||
|
@ -8,7 +9,7 @@
|
||||||
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
||||||
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
||||||
* @author Brent R. Matzelle (original founder)
|
* @author Brent R. Matzelle (original founder)
|
||||||
* @copyright 2012 - 2017 Marcus Bointon
|
* @copyright 2012 - 2020 Marcus Bointon
|
||||||
* @copyright 2010 - 2012 Jim Jagielski
|
* @copyright 2010 - 2012 Jim Jagielski
|
||||||
* @copyright 2004 - 2009 Andy Prevost
|
* @copyright 2004 - 2009 Andy Prevost
|
||||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||||
|
@ -16,6 +17,7 @@
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get an OAuth2 token from an OAuth2 provider.
|
* Get an OAuth2 token from an OAuth2 provider.
|
||||||
* * Install this script on your server so that it's accessible
|
* * Install this script on your server so that it's accessible
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Afrikaans PHPMailer language file: refer to English translation for definitive list
|
* Afrikaans PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Arabic PHPMailer language file: refer to English translation for definitive list
|
* Arabic PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Azerbaijani PHPMailer language file: refer to English translation for definitive list
|
* Azerbaijani PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bosnian PHPMailer language file: refer to English translation for definitive list
|
* Bosnian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Belarusian PHPMailer language file: refer to English translation for definitive list
|
* Belarusian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bulgarian PHPMailer language file: refer to English translation for definitive list
|
* Bulgarian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Catalan PHPMailer language file: refer to English translation for definitive list
|
* Catalan PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Chinese PHPMailer language file: refer to English translation for definitive list
|
* Chinese PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Czech PHPMailer language file: refer to English translation for definitive list
|
* Czech PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Danish PHPMailer language file: refer to English translation for definitive list
|
* Danish PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* German PHPMailer language file: refer to English translation for definitive list
|
* German PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
@ -15,6 +16,8 @@ $PHPMAILER_LANG['file_open'] = 'Dateifehler: Konnte folgende Datei ni
|
||||||
$PHPMAILER_LANG['from_failed'] = 'Die folgende Absenderadresse ist nicht korrekt: ';
|
$PHPMAILER_LANG['from_failed'] = 'Die folgende Absenderadresse ist nicht korrekt: ';
|
||||||
$PHPMAILER_LANG['instantiate'] = 'Mail-Funktion konnte nicht initialisiert werden.';
|
$PHPMAILER_LANG['instantiate'] = 'Mail-Funktion konnte nicht initialisiert werden.';
|
||||||
$PHPMAILER_LANG['invalid_address'] = 'Die Adresse ist ungültig: ';
|
$PHPMAILER_LANG['invalid_address'] = 'Die Adresse ist ungültig: ';
|
||||||
|
$PHPMAILER_LANG['invalid_hostentry'] = 'Ungültiger Hosteintrag: ';
|
||||||
|
$PHPMAILER_LANG['invalid_host'] = 'Ungültiger Host: ';
|
||||||
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wird nicht unterstützt.';
|
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wird nicht unterstützt.';
|
||||||
$PHPMAILER_LANG['provide_address'] = 'Bitte geben Sie mindestens eine Empfängeradresse an.';
|
$PHPMAILER_LANG['provide_address'] = 'Bitte geben Sie mindestens eine Empfängeradresse an.';
|
||||||
$PHPMAILER_LANG['recipients_failed'] = 'SMTP-Fehler: Die folgenden Empfänger sind nicht korrekt: ';
|
$PHPMAILER_LANG['recipients_failed'] = 'SMTP-Fehler: Die folgenden Empfänger sind nicht korrekt: ';
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Greek PHPMailer language file: refer to English translation for definitive list
|
* Greek PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Esperanto PHPMailer language file: refer to English translation for definitive list
|
* Esperanto PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Spanish PHPMailer language file: refer to English translation for definitive list
|
* Spanish PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Estonian PHPMailer language file: refer to English translation for definitive list
|
* Estonian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Persian/Farsi PHPMailer language file: refer to English translation for definitive list
|
* Persian/Farsi PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finnish PHPMailer language file: refer to English translation for definitive list
|
* Finnish PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Faroese PHPMailer language file: refer to English translation for definitive list
|
* Faroese PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* French PHPMailer language file: refer to English translation for definitive list
|
* French PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
@ -19,6 +20,8 @@ $PHPMAILER_LANG['file_open'] = 'Ouverture du fichier impossible : '
|
||||||
$PHPMAILER_LANG['from_failed'] = 'L\'adresse d\'expéditeur suivante a échoué : ';
|
$PHPMAILER_LANG['from_failed'] = 'L\'adresse d\'expéditeur suivante a échoué : ';
|
||||||
$PHPMAILER_LANG['instantiate'] = 'Impossible d\'instancier la fonction mail.';
|
$PHPMAILER_LANG['instantiate'] = 'Impossible d\'instancier la fonction mail.';
|
||||||
$PHPMAILER_LANG['invalid_address'] = 'L\'adresse courriel n\'est pas valide : ';
|
$PHPMAILER_LANG['invalid_address'] = 'L\'adresse courriel n\'est pas valide : ';
|
||||||
|
$PHPMAILER_LANG['invalid_hostentry'] = 'L\'entrée hôte n\'est pas valide : ';
|
||||||
|
$PHPMAILER_LANG['invalid_host'] = 'L\'hôte n\'est pas valide : ';
|
||||||
$PHPMAILER_LANG['mailer_not_supported'] = ' client de messagerie non supporté.';
|
$PHPMAILER_LANG['mailer_not_supported'] = ' client de messagerie non supporté.';
|
||||||
$PHPMAILER_LANG['provide_address'] = 'Vous devez fournir au moins une adresse de destinataire.';
|
$PHPMAILER_LANG['provide_address'] = 'Vous devez fournir au moins une adresse de destinataire.';
|
||||||
$PHPMAILER_LANG['recipients_failed'] = 'Erreur SMTP : les destinataires suivants sont en erreur : ';
|
$PHPMAILER_LANG['recipients_failed'] = 'Erreur SMTP : les destinataires suivants sont en erreur : ';
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Galician PHPMailer language file: refer to English translation for definitive list
|
* Galician PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hebrew PHPMailer language file: refer to English translation for definitive list
|
* Hebrew PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hindi PHPMailer language file: refer to English translation for definitive list
|
* Hindi PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Croatian PHPMailer language file: refer to English translation for definitive list
|
* Croatian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hungarian PHPMailer language file: refer to English translation for definitive list
|
* Hungarian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Armenian PHPMailer language file: refer to English translation for definitive list
|
* Armenian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indonesian PHPMailer language file: refer to English translation for definitive list
|
* Indonesian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
* @author Cecep Prawiro <cecep.prawiro@gmail.com>
|
* @author Cecep Prawiro <cecep.prawiro@gmail.com>
|
||||||
* @author @januridp
|
* @author @januridp
|
||||||
|
* @author Ian Mustafa <mail@ianmustafa.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$PHPMAILER_LANG['authenticate'] = 'Kesalahan SMTP: Tidak dapat mengotentikasi.';
|
$PHPMAILER_LANG['authenticate'] = 'Kesalahan SMTP: Tidak dapat mengotentikasi.';
|
||||||
|
@ -13,15 +15,17 @@ $PHPMAILER_LANG['empty_message'] = 'Isi pesan kosong';
|
||||||
$PHPMAILER_LANG['encoding'] = 'Pengkodean karakter tidak dikenali: ';
|
$PHPMAILER_LANG['encoding'] = 'Pengkodean karakter tidak dikenali: ';
|
||||||
$PHPMAILER_LANG['execute'] = 'Tidak dapat menjalankan proses: ';
|
$PHPMAILER_LANG['execute'] = 'Tidak dapat menjalankan proses: ';
|
||||||
$PHPMAILER_LANG['file_access'] = 'Tidak dapat mengakses berkas: ';
|
$PHPMAILER_LANG['file_access'] = 'Tidak dapat mengakses berkas: ';
|
||||||
$PHPMAILER_LANG['file_open'] = 'Kesalahan File: Berkas tidak dapat dibuka : ';
|
$PHPMAILER_LANG['file_open'] = 'Kesalahan Berkas: Berkas tidak dapat dibuka: ';
|
||||||
$PHPMAILER_LANG['from_failed'] = 'Alamat pengirim berikut mengakibatkan kesalahan: ';
|
$PHPMAILER_LANG['from_failed'] = 'Alamat pengirim berikut mengakibatkan kesalahan: ';
|
||||||
$PHPMAILER_LANG['instantiate'] = 'Tidak dapat menginisialisasi fungsi surel';
|
$PHPMAILER_LANG['instantiate'] = 'Tidak dapat menginisialisasi fungsi surel.';
|
||||||
$PHPMAILER_LANG['invalid_address'] = 'Gagal terkirim, alamat surel tidak benar : ';
|
$PHPMAILER_LANG['invalid_address'] = 'Gagal terkirim, alamat surel tidak sesuai: ';
|
||||||
$PHPMAILER_LANG['provide_address'] = 'Harus disediakan minimal satu alamat tujuan';
|
$PHPMAILER_LANG['invalid_hostentry'] = 'Gagal terkirim, entri host tidak sesuai: ';
|
||||||
|
$PHPMAILER_LANG['invalid_host'] = 'Gagal terkirim, host tidak sesuai: ';
|
||||||
|
$PHPMAILER_LANG['provide_address'] = 'Harus tersedia minimal satu alamat tujuan';
|
||||||
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer tidak didukung';
|
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer tidak didukung';
|
||||||
$PHPMAILER_LANG['recipients_failed'] = 'Kesalahan SMTP: Alamat tujuan berikut menghasilkan kesalahan : ';
|
$PHPMAILER_LANG['recipients_failed'] = 'Kesalahan SMTP: Alamat tujuan berikut menyebabkan kesalahan: ';
|
||||||
$PHPMAILER_LANG['signing'] = 'Kesalahan dalam tanda tangan : ';
|
$PHPMAILER_LANG['signing'] = 'Kesalahan dalam penandatangan SSL: ';
|
||||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() gagal.';
|
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() gagal.';
|
||||||
$PHPMAILER_LANG['smtp_error'] = 'Kesalahan pada pelayan SMTP: ';
|
$PHPMAILER_LANG['smtp_error'] = 'Kesalahan pada pelayan SMTP: ';
|
||||||
$PHPMAILER_LANG['variable_set'] = 'Tidak dapat mengatur atau mengatur ulang variable : ';
|
$PHPMAILER_LANG['variable_set'] = 'Tidak dapat mengatur atau mengatur ulang variabel: ';
|
||||||
$PHPMAILER_LANG['extension_missing'] = 'Ekstensi hilang: ';
|
$PHPMAILER_LANG['extension_missing'] = 'Ekstensi PHP tidak tersedia: ';
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Italian PHPMailer language file: refer to English translation for definitive list
|
* Italian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Japanese PHPMailer language file: refer to English translation for definitive list
|
* Japanese PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Georgian PHPMailer language file: refer to English translation for definitive list
|
* Georgian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Korean PHPMailer language file: refer to English translation for definitive list
|
* Korean PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lithuanian PHPMailer language file: refer to English translation for definitive list
|
* Lithuanian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Latvian PHPMailer language file: refer to English translation for definitive list
|
* Latvian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Malagasy PHPMailer language file: refer to English translation for definitive list
|
* Malagasy PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
* @author Hackinet <piyushjha8164@gmail.com>
|
* @author Hackinet <piyushjha8164@gmail.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$PHPMAILER_LANG['authenticate'] = 'Hadisoana SMTP: Tsy nahomby ny fanamarinana.';
|
$PHPMAILER_LANG['authenticate'] = 'Hadisoana SMTP: Tsy nahomby ny fanamarinana.';
|
||||||
$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Tsy afaka mampifandray amin\'ny mpampiantrano SMTP.';
|
$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Tsy afaka mampifandray amin\'ny mpampiantrano SMTP.';
|
||||||
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP diso: tsy voarakitra ny angona.';
|
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP diso: tsy voarakitra ny angona.';
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Malaysian PHPMailer language file: refer to English translation for definitive list
|
* Malaysian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Norwegian Bokmål PHPMailer language file: refer to English translation for definitive list
|
* Norwegian Bokmål PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dutch PHPMailer language file: refer to PHPMailer.php for definitive list.
|
* Dutch PHPMailer language file: refer to PHPMailer.php for definitive list.
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Polish PHPMailer language file: refer to English translation for definitive list
|
* Polish PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Portuguese (European) PHPMailer language file: refer to English translation for definitive list
|
* Portuguese (European) PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Brazilian Portuguese PHPMailer language file: refer to English translation for definitive list
|
* Brazilian Portuguese PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Romanian PHPMailer language file: refer to English translation for definitive list
|
* Romanian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Russian PHPMailer language file: refer to English translation for definitive list
|
* Russian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Slovak PHPMailer language file: refer to English translation for definitive list
|
* Slovak PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Slovene PHPMailer language file: refer to English translation for definitive list
|
* Slovene PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
* @author Klemen Tušar <techouse@gmail.com>
|
* @author Klemen Tušar <techouse@gmail.com>
|
||||||
* @author Filip Š <projects@filips.si>
|
* @author Filip Š <projects@filips.si>
|
||||||
|
* @author Blaž Oražem <blaz@orazem.si>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$PHPMAILER_LANG['authenticate'] = 'SMTP napaka: Avtentikacija ni uspela.';
|
$PHPMAILER_LANG['authenticate'] = 'SMTP napaka: Avtentikacija ni uspela.';
|
||||||
|
@ -17,8 +19,10 @@ $PHPMAILER_LANG['file_open'] = 'Ne morem odpreti datoteke: ';
|
||||||
$PHPMAILER_LANG['from_failed'] = 'Neveljaven e-naslov pošiljatelja: ';
|
$PHPMAILER_LANG['from_failed'] = 'Neveljaven e-naslov pošiljatelja: ';
|
||||||
$PHPMAILER_LANG['instantiate'] = 'Ne morem inicializirati mail funkcije.';
|
$PHPMAILER_LANG['instantiate'] = 'Ne morem inicializirati mail funkcije.';
|
||||||
$PHPMAILER_LANG['invalid_address'] = 'E-poštno sporočilo ni bilo poslano. E-naslov je neveljaven: ';
|
$PHPMAILER_LANG['invalid_address'] = 'E-poštno sporočilo ni bilo poslano. E-naslov je neveljaven: ';
|
||||||
|
$PHPMAILER_LANG['invalid_hostentry'] = 'Neveljaven vnos gostitelja: ';
|
||||||
|
$PHPMAILER_LANG['invalid_host'] = 'Neveljaven gostitelj: ';
|
||||||
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer ni podprt.';
|
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer ni podprt.';
|
||||||
$PHPMAILER_LANG['provide_address'] = 'Prosim vnesite vsaj enega naslovnika.';
|
$PHPMAILER_LANG['provide_address'] = 'Prosimo, vnesite vsaj enega naslovnika.';
|
||||||
$PHPMAILER_LANG['recipients_failed'] = 'SMTP napaka: Sledeči naslovniki so neveljavni: ';
|
$PHPMAILER_LANG['recipients_failed'] = 'SMTP napaka: Sledeči naslovniki so neveljavni: ';
|
||||||
$PHPMAILER_LANG['signing'] = 'Napaka pri podpisovanju: ';
|
$PHPMAILER_LANG['signing'] = 'Napaka pri podpisovanju: ';
|
||||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'Ne morem vzpostaviti povezave s SMTP strežnikom.';
|
$PHPMAILER_LANG['smtp_connect_failed'] = 'Ne morem vzpostaviti povezave s SMTP strežnikom.';
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Serbian PHPMailer language file: refer to English translation for definitive list
|
* Serbian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Swedish PHPMailer language file: refer to English translation for definitive list
|
* Swedish PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,27 +1,28 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tagalog PHPMailer language file: refer to English translation for definitive list
|
* Tagalog PHPMailer language file: refer to English translation for definitive list
|
||||||
*
|
*
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
* @author Adriane Justine Tan <adrianetan12@gmail.com>
|
* @author Adriane Justine Tan <eidoriantan@gmail.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Hindi mapatotohanan.';
|
$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Hindi mapatotohanan.';
|
||||||
$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Hindi makakonekta sa SMTP host.';
|
$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Hindi makakonekta sa SMTP host.';
|
||||||
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Ang datos ay hindi maaaring matatanggap.';
|
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Ang datos ay hindi naitanggap.';
|
||||||
$PHPMAILER_LANG['empty_message'] = 'Walang laman ang mensahe';
|
$PHPMAILER_LANG['empty_message'] = 'Walang laman ang mensahe';
|
||||||
$PHPMAILER_LANG['encoding'] = 'Hindi alam ang encoding: ';
|
$PHPMAILER_LANG['encoding'] = 'Hindi alam ang encoding: ';
|
||||||
$PHPMAILER_LANG['execute'] = 'Hindi maisasagawa: ';
|
$PHPMAILER_LANG['execute'] = 'Hindi maisasagawa: ';
|
||||||
$PHPMAILER_LANG['file_access'] = 'Hindi ma-access ang file: ';
|
$PHPMAILER_LANG['file_access'] = 'Hindi ma-access ang file: ';
|
||||||
$PHPMAILER_LANG['file_open'] = 'Hindi mabuksan ang file: ';
|
$PHPMAILER_LANG['file_open'] = 'File Error: Hindi mabuksan ang file: ';
|
||||||
$PHPMAILER_LANG['from_failed'] = 'Ang sumusunod na address ay nabigo: ';
|
$PHPMAILER_LANG['from_failed'] = 'Ang sumusunod na address ay nabigo: ';
|
||||||
$PHPMAILER_LANG['instantiate'] = 'Hindi maaaring magbigay ng institusyon ang mail';
|
$PHPMAILER_LANG['instantiate'] = 'Hindi maisimulan ang instance ng mail function.';
|
||||||
$PHPMAILER_LANG['invalid_address'] = 'Hindi wasto ang address na naibigay: ';
|
$PHPMAILER_LANG['invalid_address'] = 'Hindi wasto ang address na naibigay: ';
|
||||||
$PHPMAILER_LANG['mailer_not_supported'] = 'Ang mailer ay hindi suportado';
|
$PHPMAILER_LANG['mailer_not_supported'] = 'Ang mailer ay hindi suportado.';
|
||||||
$PHPMAILER_LANG['provide_address'] = 'Kailangan mong magbigay ng kahit isang email address na tatanggap';
|
$PHPMAILER_LANG['provide_address'] = 'Kailangan mong magbigay ng kahit isang email address na tatanggap.';
|
||||||
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Ang mga sumusunod na tatanggap ay nabigo: ';
|
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Ang mga sumusunod na tatanggap ay nabigo: ';
|
||||||
$PHPMAILER_LANG['signing'] = 'Hindi ma-sign';
|
$PHPMAILER_LANG['signing'] = 'Hindi ma-sign: ';
|
||||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'Ang SMTP connect() ay nabigo';
|
$PHPMAILER_LANG['smtp_connect_failed'] = 'Ang SMTP connect() ay nabigo.';
|
||||||
$PHPMAILER_LANG['smtp_error'] = 'Ang server ng SMTP ay nabigo';
|
$PHPMAILER_LANG['smtp_error'] = 'Ang server ng SMTP ay nabigo: ';
|
||||||
$PHPMAILER_LANG['variable_set'] = 'Hindi matatakda ang mga variables: ';
|
$PHPMAILER_LANG['variable_set'] = 'Hindi matatakda o ma-reset ang mga variables: ';
|
||||||
$PHPMAILER_LANG['extension_missing'] = 'Nawawala ang extension';
|
$PHPMAILER_LANG['extension_missing'] = 'Nawawala ang extension: ';
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Turkish PHPMailer language file: refer to English translation for definitive list
|
* Turkish PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ukrainian PHPMailer language file: refer to English translation for definitive list
|
* Ukrainian PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vietnamese (Tiếng Việt) PHPMailer language file: refer to English translation for definitive list.
|
* Vietnamese (Tiếng Việt) PHPMailer language file: refer to English translation for definitive list.
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Traditional Chinese PHPMailer language file: refer to English translation for definitive list
|
* Traditional Chinese PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Simplified Chinese PHPMailer language file: refer to English translation for definitive list
|
* Simplified Chinese PHPMailer language file: refer to English translation for definitive list
|
||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHPMailer Exception class.
|
* PHPMailer Exception class.
|
||||||
* PHP Version 5.5.
|
* PHP Version 5.5.
|
||||||
|
@ -9,7 +10,7 @@
|
||||||
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
||||||
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
||||||
* @author Brent R. Matzelle (original founder)
|
* @author Brent R. Matzelle (original founder)
|
||||||
* @copyright 2012 - 2017 Marcus Bointon
|
* @copyright 2012 - 2020 Marcus Bointon
|
||||||
* @copyright 2010 - 2012 Jim Jagielski
|
* @copyright 2010 - 2012 Jim Jagielski
|
||||||
* @copyright 2004 - 2009 Andy Prevost
|
* @copyright 2004 - 2009 Andy Prevost
|
||||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHPMailer - PHP email creation and transport class.
|
* PHPMailer - PHP email creation and transport class.
|
||||||
* PHP Version 5.5.
|
* PHP Version 5.5.
|
||||||
|
@ -9,7 +10,7 @@
|
||||||
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
||||||
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
||||||
* @author Brent R. Matzelle (original founder)
|
* @author Brent R. Matzelle (original founder)
|
||||||
* @copyright 2012 - 2015 Marcus Bointon
|
* @copyright 2012 - 2020 Marcus Bointon
|
||||||
* @copyright 2010 - 2012 Jim Jagielski
|
* @copyright 2010 - 2012 Jim Jagielski
|
||||||
* @copyright 2004 - 2009 Andy Prevost
|
* @copyright 2004 - 2009 Andy Prevost
|
||||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHPMailer - PHP email creation and transport class.
|
* PHPMailer - PHP email creation and transport class.
|
||||||
* PHP Version 5.5.
|
* PHP Version 5.5.
|
||||||
|
@ -9,7 +10,7 @@
|
||||||
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
||||||
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
||||||
* @author Brent R. Matzelle (original founder)
|
* @author Brent R. Matzelle (original founder)
|
||||||
* @copyright 2012 - 2019 Marcus Bointon
|
* @copyright 2012 - 2020 Marcus Bointon
|
||||||
* @copyright 2010 - 2012 Jim Jagielski
|
* @copyright 2010 - 2012 Jim Jagielski
|
||||||
* @copyright 2004 - 2009 Andy Prevost
|
* @copyright 2004 - 2009 Andy Prevost
|
||||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||||
|
@ -388,11 +389,11 @@ class PHPMailer
|
||||||
* SMTP class debug output mode.
|
* SMTP class debug output mode.
|
||||||
* Debug output level.
|
* Debug output level.
|
||||||
* Options:
|
* Options:
|
||||||
* * SMTP::DEBUG_OFF: No output
|
* @see SMTP::DEBUG_OFF: No output
|
||||||
* * SMTP::DEBUG_CLIENT: Client messages
|
* @see SMTP::DEBUG_CLIENT: Client messages
|
||||||
* * SMTP::DEBUG_SERVER: Client and server messages
|
* @see SMTP::DEBUG_SERVER: Client and server messages
|
||||||
* * SMTP::DEBUG_CONNECTION: As SERVER plus connection status
|
* @see SMTP::DEBUG_CONNECTION: As SERVER plus connection status
|
||||||
* * SMTP::DEBUG_LOWLEVEL: Noisy, low-level data output, rarely needed
|
* @see SMTP::DEBUG_LOWLEVEL: Noisy, low-level data output, rarely needed
|
||||||
*
|
*
|
||||||
* @see SMTP::$do_debug
|
* @see SMTP::$do_debug
|
||||||
*
|
*
|
||||||
|
@ -441,6 +442,8 @@ class PHPMailer
|
||||||
* Only supported in `mail` and `sendmail` transports, not in SMTP.
|
* Only supported in `mail` and `sendmail` transports, not in SMTP.
|
||||||
*
|
*
|
||||||
* @var bool
|
* @var bool
|
||||||
|
*
|
||||||
|
* @deprecated 6.0.0 PHPMailer isn't a mailing list manager!
|
||||||
*/
|
*/
|
||||||
public $SingleTo = false;
|
public $SingleTo = false;
|
||||||
|
|
||||||
|
@ -745,7 +748,7 @@ class PHPMailer
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
const VERSION = '6.1.6';
|
const VERSION = '6.2.0';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Error severity: message only, continue processing.
|
* Error severity: message only, continue processing.
|
||||||
|
@ -897,6 +900,7 @@ class PHPMailer
|
||||||
switch ($this->Debugoutput) {
|
switch ($this->Debugoutput) {
|
||||||
case 'error_log':
|
case 'error_log':
|
||||||
//Don't output, just log
|
//Don't output, just log
|
||||||
|
/** @noinspection ForgottenDebugOutputInspection */
|
||||||
error_log($str);
|
error_log($str);
|
||||||
break;
|
break;
|
||||||
case 'html':
|
case 'html':
|
||||||
|
@ -1182,9 +1186,11 @@ class PHPMailer
|
||||||
//Use this built-in parser if it's available
|
//Use this built-in parser if it's available
|
||||||
$list = imap_rfc822_parse_adrlist($addrstr, '');
|
$list = imap_rfc822_parse_adrlist($addrstr, '');
|
||||||
foreach ($list as $address) {
|
foreach ($list as $address) {
|
||||||
if (('.SYNTAX-ERROR.' !== $address->host) && static::validateAddress(
|
if (
|
||||||
|
('.SYNTAX-ERROR.' !== $address->host) && static::validateAddress(
|
||||||
$address->mailbox . '@' . $address->host
|
$address->mailbox . '@' . $address->host
|
||||||
)) {
|
)
|
||||||
|
) {
|
||||||
$addresses[] = [
|
$addresses[] = [
|
||||||
'name' => (property_exists($address, 'personal') ? $address->personal : ''),
|
'name' => (property_exists($address, 'personal') ? $address->personal : ''),
|
||||||
'address' => $address->mailbox . '@' . $address->host,
|
'address' => $address->mailbox . '@' . $address->host,
|
||||||
|
@ -1238,7 +1244,8 @@ class PHPMailer
|
||||||
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
|
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
|
||||||
// Don't validate now addresses with IDN. Will be done in send().
|
// Don't validate now addresses with IDN. Will be done in send().
|
||||||
$pos = strrpos($address, '@');
|
$pos = strrpos($address, '@');
|
||||||
if ((false === $pos)
|
if (
|
||||||
|
(false === $pos)
|
||||||
|| ((!$this->has8bitChars(substr($address, ++$pos)) || !static::idnSupported())
|
|| ((!$this->has8bitChars(substr($address, ++$pos)) || !static::idnSupported())
|
||||||
&& !static::validateAddress($address))
|
&& !static::validateAddress($address))
|
||||||
) {
|
) {
|
||||||
|
@ -1307,7 +1314,7 @@ class PHPMailer
|
||||||
$patternselect = static::$validator;
|
$patternselect = static::$validator;
|
||||||
}
|
}
|
||||||
if (is_callable($patternselect)) {
|
if (is_callable($patternselect)) {
|
||||||
return $patternselect($address);
|
return call_user_func($patternselect, $address);
|
||||||
}
|
}
|
||||||
//Reject line breaks in addresses; it's valid RFC5322, but not RFC5321
|
//Reject line breaks in addresses; it's valid RFC5322, but not RFC5321
|
||||||
if (strpos($address, "\n") !== false || strpos($address, "\r") !== false) {
|
if (strpos($address, "\n") !== false || strpos($address, "\r") !== false) {
|
||||||
|
@ -1348,7 +1355,7 @@ class PHPMailer
|
||||||
/*
|
/*
|
||||||
* This is the pattern used in the HTML5 spec for validation of 'email' type form input elements.
|
* This is the pattern used in the HTML5 spec for validation of 'email' type form input elements.
|
||||||
*
|
*
|
||||||
* @see http://www.whatwg.org/specs/web-apps/current-work/#e-mail-state-(type=email)
|
* @see https://html.spec.whatwg.org/#e-mail-state-(type=email)
|
||||||
*/
|
*/
|
||||||
return (bool) preg_match(
|
return (bool) preg_match(
|
||||||
'/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}' .
|
'/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}' .
|
||||||
|
@ -1390,7 +1397,8 @@ class PHPMailer
|
||||||
{
|
{
|
||||||
// Verify we have required functions, CharSet, and at-sign.
|
// Verify we have required functions, CharSet, and at-sign.
|
||||||
$pos = strrpos($address, '@');
|
$pos = strrpos($address, '@');
|
||||||
if (!empty($this->CharSet) &&
|
if (
|
||||||
|
!empty($this->CharSet) &&
|
||||||
false !== $pos &&
|
false !== $pos &&
|
||||||
static::idnSupported()
|
static::idnSupported()
|
||||||
) {
|
) {
|
||||||
|
@ -1452,8 +1460,9 @@ class PHPMailer
|
||||||
*/
|
*/
|
||||||
public function preSend()
|
public function preSend()
|
||||||
{
|
{
|
||||||
if ('smtp' === $this->Mailer
|
if (
|
||||||
|| ('mail' === $this->Mailer && stripos(PHP_OS, 'WIN') === 0)
|
'smtp' === $this->Mailer
|
||||||
|
|| ('mail' === $this->Mailer && (PHP_VERSION_ID >= 80000 || stripos(PHP_OS, 'WIN') === 0))
|
||||||
) {
|
) {
|
||||||
//SMTP mandates RFC-compliant line endings
|
//SMTP mandates RFC-compliant line endings
|
||||||
//and it's also used with mail() on Windows
|
//and it's also used with mail() on Windows
|
||||||
|
@ -1463,7 +1472,8 @@ class PHPMailer
|
||||||
static::setLE(PHP_EOL);
|
static::setLE(PHP_EOL);
|
||||||
}
|
}
|
||||||
//Check for buggy PHP versions that add a header with an incorrect line break
|
//Check for buggy PHP versions that add a header with an incorrect line break
|
||||||
if ('mail' === $this->Mailer
|
if (
|
||||||
|
'mail' === $this->Mailer
|
||||||
&& ((PHP_VERSION_ID >= 70000 && PHP_VERSION_ID < 70017)
|
&& ((PHP_VERSION_ID >= 70000 && PHP_VERSION_ID < 70017)
|
||||||
|| (PHP_VERSION_ID >= 70100 && PHP_VERSION_ID < 70103))
|
|| (PHP_VERSION_ID >= 70100 && PHP_VERSION_ID < 70103))
|
||||||
&& ini_get('mail.add_x_header') === '1'
|
&& ini_get('mail.add_x_header') === '1'
|
||||||
|
@ -1550,7 +1560,8 @@ class PHPMailer
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sign with DKIM if enabled
|
// Sign with DKIM if enabled
|
||||||
if (!empty($this->DKIM_domain)
|
if (
|
||||||
|
!empty($this->DKIM_domain)
|
||||||
&& !empty($this->DKIM_selector)
|
&& !empty($this->DKIM_selector)
|
||||||
&& (!empty($this->DKIM_private_string)
|
&& (!empty($this->DKIM_private_string)
|
||||||
|| (!empty($this->DKIM_private)
|
|| (!empty($this->DKIM_private)
|
||||||
|
@ -1607,6 +1618,9 @@ class PHPMailer
|
||||||
return $this->mailSend($this->MIMEHeader, $this->MIMEBody);
|
return $this->mailSend($this->MIMEHeader, $this->MIMEBody);
|
||||||
}
|
}
|
||||||
} catch (Exception $exc) {
|
} catch (Exception $exc) {
|
||||||
|
if ($this->Mailer === 'smtp' && $this->SMTPKeepAlive == true) {
|
||||||
|
$this->smtp->reset();
|
||||||
|
}
|
||||||
$this->setError($exc->getMessage());
|
$this->setError($exc->getMessage());
|
||||||
$this->edebug($exc->getMessage());
|
$this->edebug($exc->getMessage());
|
||||||
if ($this->exceptions) {
|
if ($this->exceptions) {
|
||||||
|
@ -1711,7 +1725,8 @@ class PHPMailer
|
||||||
protected static function isShellSafe($string)
|
protected static function isShellSafe($string)
|
||||||
{
|
{
|
||||||
// Future-proof
|
// Future-proof
|
||||||
if (escapeshellcmd($string) !== $string
|
if (
|
||||||
|
escapeshellcmd($string) !== $string
|
||||||
|| !in_array(escapeshellarg($string), ["'$string'", "\"$string\""])
|
|| !in_array(escapeshellarg($string), ["'$string'", "\"$string\""])
|
||||||
) {
|
) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -1747,6 +1762,23 @@ class PHPMailer
|
||||||
return !preg_match('#^[a-z]+://#i', $path);
|
return !preg_match('#^[a-z]+://#i', $path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether a file path is safe, accessible, and readable.
|
||||||
|
*
|
||||||
|
* @param string $path A relative or absolute path to a file
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected static function fileIsAccessible($path)
|
||||||
|
{
|
||||||
|
$readable = file_exists($path);
|
||||||
|
//If not a UNC path (expected to start with \\), check read permission, see #2069
|
||||||
|
if (strpos($path, '\\\\') !== 0) {
|
||||||
|
$readable = $readable && is_readable($path);
|
||||||
|
}
|
||||||
|
return static::isPermittedPath($path) && $readable;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send mail using the PHP mail() function.
|
* Send mail using the PHP mail() function.
|
||||||
*
|
*
|
||||||
|
@ -1958,11 +1990,13 @@ class PHPMailer
|
||||||
|
|
||||||
foreach ($hosts as $hostentry) {
|
foreach ($hosts as $hostentry) {
|
||||||
$hostinfo = [];
|
$hostinfo = [];
|
||||||
if (!preg_match(
|
if (
|
||||||
|
!preg_match(
|
||||||
'/^(?:(ssl|tls):\/\/)?(.+?)(?::(\d+))?$/',
|
'/^(?:(ssl|tls):\/\/)?(.+?)(?::(\d+))?$/',
|
||||||
trim($hostentry),
|
trim($hostentry),
|
||||||
$hostinfo
|
$hostinfo
|
||||||
)) {
|
)
|
||||||
|
) {
|
||||||
$this->edebug($this->lang('invalid_hostentry') . ' ' . trim($hostentry));
|
$this->edebug($this->lang('invalid_hostentry') . ' ' . trim($hostentry));
|
||||||
// Not a valid host entry
|
// Not a valid host entry
|
||||||
continue;
|
continue;
|
||||||
|
@ -2000,7 +2034,12 @@ class PHPMailer
|
||||||
}
|
}
|
||||||
$host = $hostinfo[2];
|
$host = $hostinfo[2];
|
||||||
$port = $this->Port;
|
$port = $this->Port;
|
||||||
if (array_key_exists(3, $hostinfo) && is_numeric($hostinfo[3]) && $hostinfo[3] > 0 && $hostinfo[3] < 65536) {
|
if (
|
||||||
|
array_key_exists(3, $hostinfo) &&
|
||||||
|
is_numeric($hostinfo[3]) &&
|
||||||
|
$hostinfo[3] > 0 &&
|
||||||
|
$hostinfo[3] < 65536
|
||||||
|
) {
|
||||||
$port = (int) $hostinfo[3];
|
$port = (int) $hostinfo[3];
|
||||||
}
|
}
|
||||||
if ($this->smtp->connect($prefix . $host, $port, $this->Timeout, $options)) {
|
if ($this->smtp->connect($prefix . $host, $port, $this->Timeout, $options)) {
|
||||||
|
@ -2026,12 +2065,14 @@ class PHPMailer
|
||||||
// We must resend EHLO after TLS negotiation
|
// We must resend EHLO after TLS negotiation
|
||||||
$this->smtp->hello($hello);
|
$this->smtp->hello($hello);
|
||||||
}
|
}
|
||||||
if ($this->SMTPAuth && !$this->smtp->authenticate(
|
if (
|
||||||
|
$this->SMTPAuth && !$this->smtp->authenticate(
|
||||||
$this->Username,
|
$this->Username,
|
||||||
$this->Password,
|
$this->Password,
|
||||||
$this->AuthType,
|
$this->AuthType,
|
||||||
$this->oauth
|
$this->oauth
|
||||||
)) {
|
)
|
||||||
|
) {
|
||||||
throw new Exception($this->lang('authenticate'));
|
throw new Exception($this->lang('authenticate'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2089,7 +2130,7 @@ class PHPMailer
|
||||||
'am' => 'hy',
|
'am' => 'hy',
|
||||||
];
|
];
|
||||||
|
|
||||||
if (isset($renamed_langcodes[$langcode])) {
|
if (array_key_exists($langcode, $renamed_langcodes)) {
|
||||||
$langcode = $renamed_langcodes[$langcode];
|
$langcode = $renamed_langcodes[$langcode];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2130,7 +2171,7 @@ class PHPMailer
|
||||||
// There is no English translation file
|
// There is no English translation file
|
||||||
if ('en' !== $langcode) {
|
if ('en' !== $langcode) {
|
||||||
// Make sure language file path is readable
|
// Make sure language file path is readable
|
||||||
if (!static::isPermittedPath($lang_file) || !file_exists($lang_file)) {
|
if (!static::fileIsAccessible($lang_file)) {
|
||||||
$foundlang = false;
|
$foundlang = false;
|
||||||
} else {
|
} else {
|
||||||
// Overwrite language-specific strings.
|
// Overwrite language-specific strings.
|
||||||
|
@ -2378,21 +2419,18 @@ class PHPMailer
|
||||||
|
|
||||||
$result .= $this->headerLine('Date', '' === $this->MessageDate ? self::rfcDate() : $this->MessageDate);
|
$result .= $this->headerLine('Date', '' === $this->MessageDate ? self::rfcDate() : $this->MessageDate);
|
||||||
|
|
||||||
// To be created automatically by mail()
|
// The To header is created automatically by mail(), so needs to be omitted here
|
||||||
if ($this->SingleTo) {
|
|
||||||
if ('mail' !== $this->Mailer) {
|
if ('mail' !== $this->Mailer) {
|
||||||
|
if ($this->SingleTo) {
|
||||||
foreach ($this->to as $toaddr) {
|
foreach ($this->to as $toaddr) {
|
||||||
$this->SingleToArray[] = $this->addrFormat($toaddr);
|
$this->SingleToArray[] = $this->addrFormat($toaddr);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} elseif (count($this->to) > 0) {
|
} elseif (count($this->to) > 0) {
|
||||||
if ('mail' !== $this->Mailer) {
|
|
||||||
$result .= $this->addrAppend('To', $this->to);
|
$result .= $this->addrAppend('To', $this->to);
|
||||||
}
|
|
||||||
} elseif (count($this->cc) === 0) {
|
} elseif (count($this->cc) === 0) {
|
||||||
$result .= $this->headerLine('To', 'undisclosed-recipients:;');
|
$result .= $this->headerLine('To', 'undisclosed-recipients:;');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
$result .= $this->addrAppend('From', [[trim($this->From), $this->FromName]]);
|
$result .= $this->addrAppend('From', [[trim($this->From), $this->FromName]]);
|
||||||
|
|
||||||
// sendmail and mail() extract Cc from the header before sending
|
// sendmail and mail() extract Cc from the header before sending
|
||||||
|
@ -2401,7 +2439,8 @@ class PHPMailer
|
||||||
}
|
}
|
||||||
|
|
||||||
// sendmail and mail() extract Bcc from the header before sending
|
// sendmail and mail() extract Bcc from the header before sending
|
||||||
if ((
|
if (
|
||||||
|
(
|
||||||
'sendmail' === $this->Mailer || 'qmail' === $this->Mailer || 'mail' === $this->Mailer
|
'sendmail' === $this->Mailer || 'qmail' === $this->Mailer || 'mail' === $this->Mailer
|
||||||
)
|
)
|
||||||
&& count($this->bcc) > 0
|
&& count($this->bcc) > 0
|
||||||
|
@ -2947,7 +2986,7 @@ class PHPMailer
|
||||||
* @param string $path Path to the attachment
|
* @param string $path Path to the attachment
|
||||||
* @param string $name Overrides the attachment name
|
* @param string $name Overrides the attachment name
|
||||||
* @param string $encoding File encoding (see $Encoding)
|
* @param string $encoding File encoding (see $Encoding)
|
||||||
* @param string $type File extension (MIME) type
|
* @param string $type MIME type, e.g. `image/jpeg`; determined automatically from $path if not specified
|
||||||
* @param string $disposition Disposition to use
|
* @param string $disposition Disposition to use
|
||||||
*
|
*
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
|
@ -2962,7 +3001,7 @@ class PHPMailer
|
||||||
$disposition = 'attachment'
|
$disposition = 'attachment'
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
if (!static::isPermittedPath($path) || !@is_file($path) || !is_readable($path)) {
|
if (!static::fileIsAccessible($path)) {
|
||||||
throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE);
|
throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2975,7 +3014,6 @@ class PHPMailer
|
||||||
if ('' === $name) {
|
if ('' === $name) {
|
||||||
$name = $filename;
|
$name = $filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$this->validateEncoding($encoding)) {
|
if (!$this->validateEncoding($encoding)) {
|
||||||
throw new Exception($this->lang('encoding') . $encoding);
|
throw new Exception($this->lang('encoding') . $encoding);
|
||||||
}
|
}
|
||||||
|
@ -3137,7 +3175,7 @@ class PHPMailer
|
||||||
protected function encodeFile($path, $encoding = self::ENCODING_BASE64)
|
protected function encodeFile($path, $encoding = self::ENCODING_BASE64)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
if (!static::isPermittedPath($path) || !file_exists($path) || !is_readable($path)) {
|
if (!static::fileIsAccessible($path)) {
|
||||||
throw new Exception($this->lang('file_open') . $path, self::STOP_CONTINUE);
|
throw new Exception($this->lang('file_open') . $path, self::STOP_CONTINUE);
|
||||||
}
|
}
|
||||||
$file_buffer = file_get_contents($path);
|
$file_buffer = file_get_contents($path);
|
||||||
|
@ -3523,7 +3561,7 @@ class PHPMailer
|
||||||
$disposition = 'inline'
|
$disposition = 'inline'
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
if (!static::isPermittedPath($path) || !@is_file($path) || !is_readable($path)) {
|
if (!static::fileIsAccessible($path)) {
|
||||||
throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE);
|
throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3872,7 +3910,8 @@ class PHPMailer
|
||||||
public static function isValidHost($host)
|
public static function isValidHost($host)
|
||||||
{
|
{
|
||||||
//Simple syntax limits
|
//Simple syntax limits
|
||||||
if (empty($host)
|
if (
|
||||||
|
empty($host)
|
||||||
|| !is_string($host)
|
|| !is_string($host)
|
||||||
|| strlen($host) > 256
|
|| strlen($host) > 256
|
||||||
|| !preg_match('/^([a-zA-Z\d.-]*|\[[a-fA-F\d:]+])$/', $host)
|
|| !preg_match('/^([a-zA-Z\d.-]*|\[[a-fA-F\d:]+])$/', $host)
|
||||||
|
@ -3990,7 +4029,8 @@ class PHPMailer
|
||||||
* @param string $message HTML message string
|
* @param string $message HTML message string
|
||||||
* @param string $basedir Absolute path to a base directory to prepend to relative paths to images
|
* @param string $basedir Absolute path to a base directory to prepend to relative paths to images
|
||||||
* @param bool|callable $advanced Whether to use the internal HTML to text converter
|
* @param bool|callable $advanced Whether to use the internal HTML to text converter
|
||||||
* or your own custom converter @return string $message The transformed message Body
|
* or your own custom converter
|
||||||
|
* @return string The transformed message body
|
||||||
*
|
*
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*
|
*
|
||||||
|
@ -4037,7 +4077,8 @@ class PHPMailer
|
||||||
);
|
);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (// Only process relative URLs if a basedir is provided (i.e. no absolute local paths)
|
if (
|
||||||
|
// Only process relative URLs if a basedir is provided (i.e. no absolute local paths)
|
||||||
!empty($basedir)
|
!empty($basedir)
|
||||||
// Ignore URLs containing parent dir traversal (..)
|
// Ignore URLs containing parent dir traversal (..)
|
||||||
&& (strpos($url, '..') === false)
|
&& (strpos($url, '..') === false)
|
||||||
|
@ -4059,7 +4100,8 @@ class PHPMailer
|
||||||
if (strlen($directory) > 1 && '/' !== substr($directory, -1)) {
|
if (strlen($directory) > 1 && '/' !== substr($directory, -1)) {
|
||||||
$directory .= '/';
|
$directory .= '/';
|
||||||
}
|
}
|
||||||
if ($this->addEmbeddedImage(
|
if (
|
||||||
|
$this->addEmbeddedImage(
|
||||||
$basedir . $directory . $filename,
|
$basedir . $directory . $filename,
|
||||||
$cid,
|
$cid,
|
||||||
$filename,
|
$filename,
|
||||||
|
@ -4114,7 +4156,7 @@ class PHPMailer
|
||||||
public function html2text($html, $advanced = false)
|
public function html2text($html, $advanced = false)
|
||||||
{
|
{
|
||||||
if (is_callable($advanced)) {
|
if (is_callable($advanced)) {
|
||||||
return $advanced($html);
|
return call_user_func($advanced, $html);
|
||||||
}
|
}
|
||||||
|
|
||||||
return html_entity_decode(
|
return html_entity_decode(
|
||||||
|
@ -4213,6 +4255,7 @@ class PHPMailer
|
||||||
'tiff' => 'image/tiff',
|
'tiff' => 'image/tiff',
|
||||||
'tif' => 'image/tiff',
|
'tif' => 'image/tiff',
|
||||||
'webp' => 'image/webp',
|
'webp' => 'image/webp',
|
||||||
|
'avif' => 'image/avif',
|
||||||
'heif' => 'image/heif',
|
'heif' => 'image/heif',
|
||||||
'heifs' => 'image/heif-sequence',
|
'heifs' => 'image/heif-sequence',
|
||||||
'heic' => 'image/heic',
|
'heic' => 'image/heic',
|
||||||
|
@ -4483,11 +4526,15 @@ class PHPMailer
|
||||||
$privKey = openssl_pkey_get_private($privKeyStr);
|
$privKey = openssl_pkey_get_private($privKeyStr);
|
||||||
}
|
}
|
||||||
if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) {
|
if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) {
|
||||||
|
if (PHP_MAJOR_VERSION < 8) {
|
||||||
openssl_pkey_free($privKey);
|
openssl_pkey_free($privKey);
|
||||||
|
}
|
||||||
|
|
||||||
return base64_encode($signature);
|
return base64_encode($signature);
|
||||||
}
|
}
|
||||||
|
if (PHP_MAJOR_VERSION < 8) {
|
||||||
openssl_pkey_free($privKey);
|
openssl_pkey_free($privKey);
|
||||||
|
}
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHPMailer POP-Before-SMTP Authentication Class.
|
* PHPMailer POP-Before-SMTP Authentication Class.
|
||||||
* PHP Version 5.5.
|
* PHP Version 5.5.
|
||||||
|
@ -9,7 +10,7 @@
|
||||||
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
||||||
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
||||||
* @author Brent R. Matzelle (original founder)
|
* @author Brent R. Matzelle (original founder)
|
||||||
* @copyright 2012 - 2019 Marcus Bointon
|
* @copyright 2012 - 2020 Marcus Bointon
|
||||||
* @copyright 2010 - 2012 Jim Jagielski
|
* @copyright 2010 - 2012 Jim Jagielski
|
||||||
* @copyright 2004 - 2009 Andy Prevost
|
* @copyright 2004 - 2009 Andy Prevost
|
||||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||||
|
@ -45,7 +46,7 @@ class POP3
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
const VERSION = '6.1.6';
|
const VERSION = '6.2.0';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default POP3 port number.
|
* Default POP3 port number.
|
||||||
|
@ -62,12 +63,16 @@ class POP3
|
||||||
const DEFAULT_TIMEOUT = 30;
|
const DEFAULT_TIMEOUT = 30;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Debug display level.
|
* POP3 class debug output mode.
|
||||||
* Options: 0 = no, 1+ = yes.
|
* Debug output level.
|
||||||
|
* Options:
|
||||||
|
* @see POP3::DEBUG_OFF: No output
|
||||||
|
* @see POP3::DEBUG_SERVER: Server messages, connection/server errors
|
||||||
|
* @see POP3::DEBUG_CLIENT: Client and Server messages, connection/server errors
|
||||||
*
|
*
|
||||||
* @var int
|
* @var int
|
||||||
*/
|
*/
|
||||||
public $do_debug = 0;
|
public $do_debug = self::DEBUG_OFF;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* POP3 mail server hostname.
|
* POP3 mail server hostname.
|
||||||
|
@ -130,6 +135,28 @@ class POP3
|
||||||
*/
|
*/
|
||||||
const LE = "\r\n";
|
const LE = "\r\n";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Debug level for no output.
|
||||||
|
*
|
||||||
|
* @var int
|
||||||
|
*/
|
||||||
|
const DEBUG_OFF = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Debug level to show server -> client messages
|
||||||
|
* also shows clients connection errors or errors from server
|
||||||
|
*
|
||||||
|
* @var int
|
||||||
|
*/
|
||||||
|
const DEBUG_SERVER = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Debug level to show client -> server and server -> client messages.
|
||||||
|
*
|
||||||
|
* @var int
|
||||||
|
*/
|
||||||
|
const DEBUG_CLIENT = 2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Simple static wrapper for all-in-one POP before SMTP.
|
* Simple static wrapper for all-in-one POP before SMTP.
|
||||||
*
|
*
|
||||||
|
@ -329,7 +356,7 @@ class POP3
|
||||||
protected function getResponse($size = 128)
|
protected function getResponse($size = 128)
|
||||||
{
|
{
|
||||||
$response = fgets($this->pop_conn, $size);
|
$response = fgets($this->pop_conn, $size);
|
||||||
if ($this->do_debug >= 1) {
|
if ($this->do_debug >= self::DEBUG_SERVER) {
|
||||||
echo 'Server -> Client: ', $response;
|
echo 'Server -> Client: ', $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -346,7 +373,7 @@ class POP3
|
||||||
protected function sendString($string)
|
protected function sendString($string)
|
||||||
{
|
{
|
||||||
if ($this->pop_conn) {
|
if ($this->pop_conn) {
|
||||||
if ($this->do_debug >= 2) { //Show client messages when debug >= 2
|
if ($this->do_debug >= self::DEBUG_CLIENT) { //Show client messages when debug >= 2
|
||||||
echo 'Client -> Server: ', $string;
|
echo 'Client -> Server: ', $string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -384,7 +411,7 @@ class POP3
|
||||||
protected function setError($error)
|
protected function setError($error)
|
||||||
{
|
{
|
||||||
$this->errors[] = $error;
|
$this->errors[] = $error;
|
||||||
if ($this->do_debug >= 1) {
|
if ($this->do_debug >= self::DEBUG_SERVER) {
|
||||||
echo '<pre>';
|
echo '<pre>';
|
||||||
foreach ($this->errors as $e) {
|
foreach ($this->errors as $e) {
|
||||||
print_r($e);
|
print_r($e);
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHPMailer RFC821 SMTP email transport class.
|
* PHPMailer RFC821 SMTP email transport class.
|
||||||
* PHP Version 5.5.
|
* PHP Version 5.5.
|
||||||
|
@ -9,7 +10,7 @@
|
||||||
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
||||||
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
||||||
* @author Brent R. Matzelle (original founder)
|
* @author Brent R. Matzelle (original founder)
|
||||||
* @copyright 2012 - 2019 Marcus Bointon
|
* @copyright 2012 - 2020 Marcus Bointon
|
||||||
* @copyright 2010 - 2012 Jim Jagielski
|
* @copyright 2010 - 2012 Jim Jagielski
|
||||||
* @copyright 2004 - 2009 Andy Prevost
|
* @copyright 2004 - 2009 Andy Prevost
|
||||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||||
|
@ -34,7 +35,7 @@ class SMTP
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
const VERSION = '6.1.6';
|
const VERSION = '6.2.0';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SMTP line break constant.
|
* SMTP line break constant.
|
||||||
|
@ -311,12 +312,6 @@ class SMTP
|
||||||
*/
|
*/
|
||||||
public function connect($host, $port = null, $timeout = 30, $options = [])
|
public function connect($host, $port = null, $timeout = 30, $options = [])
|
||||||
{
|
{
|
||||||
static $streamok;
|
|
||||||
//This is enabled by default since 5.0.0 but some providers disable it
|
|
||||||
//Check this once and cache the result
|
|
||||||
if (null === $streamok) {
|
|
||||||
$streamok = function_exists('stream_socket_client');
|
|
||||||
}
|
|
||||||
// Clear errors to avoid confusion
|
// Clear errors to avoid confusion
|
||||||
$this->setError('');
|
$this->setError('');
|
||||||
// Make sure we are __not__ connected
|
// Make sure we are __not__ connected
|
||||||
|
@ -335,12 +330,48 @@ class SMTP
|
||||||
(count($options) > 0 ? var_export($options, true) : 'array()'),
|
(count($options) > 0 ? var_export($options, true) : 'array()'),
|
||||||
self::DEBUG_CONNECTION
|
self::DEBUG_CONNECTION
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->smtp_conn = $this->getSMTPConnection($host, $port, $timeout, $options);
|
||||||
|
|
||||||
|
if ($this->smtp_conn === false) {
|
||||||
|
//Error info already set inside `getSMTPConnection()`
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->edebug('Connection: opened', self::DEBUG_CONNECTION);
|
||||||
|
|
||||||
|
// Get any announcement
|
||||||
|
$this->last_reply = $this->get_lines();
|
||||||
|
$this->edebug('SERVER -> CLIENT: ' . $this->last_reply, self::DEBUG_SERVER);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create connection to the SMTP server.
|
||||||
|
*
|
||||||
|
* @param string $host SMTP server IP or host name
|
||||||
|
* @param int $port The port number to connect to
|
||||||
|
* @param int $timeout How long to wait for the connection to open
|
||||||
|
* @param array $options An array of options for stream_context_create()
|
||||||
|
*
|
||||||
|
* @return false|resource
|
||||||
|
*/
|
||||||
|
protected function getSMTPConnection($host, $port = null, $timeout = 30, $options = [])
|
||||||
|
{
|
||||||
|
static $streamok;
|
||||||
|
//This is enabled by default since 5.0.0 but some providers disable it
|
||||||
|
//Check this once and cache the result
|
||||||
|
if (null === $streamok) {
|
||||||
|
$streamok = function_exists('stream_socket_client');
|
||||||
|
}
|
||||||
|
|
||||||
$errno = 0;
|
$errno = 0;
|
||||||
$errstr = '';
|
$errstr = '';
|
||||||
if ($streamok) {
|
if ($streamok) {
|
||||||
$socket_context = stream_context_create($options);
|
$socket_context = stream_context_create($options);
|
||||||
set_error_handler([$this, 'errorHandler']);
|
set_error_handler([$this, 'errorHandler']);
|
||||||
$this->smtp_conn = stream_socket_client(
|
$connection = stream_socket_client(
|
||||||
$host . ':' . $port,
|
$host . ':' . $port,
|
||||||
$errno,
|
$errno,
|
||||||
$errstr,
|
$errstr,
|
||||||
|
@ -356,7 +387,7 @@ class SMTP
|
||||||
self::DEBUG_CONNECTION
|
self::DEBUG_CONNECTION
|
||||||
);
|
);
|
||||||
set_error_handler([$this, 'errorHandler']);
|
set_error_handler([$this, 'errorHandler']);
|
||||||
$this->smtp_conn = fsockopen(
|
$connection = fsockopen(
|
||||||
$host,
|
$host,
|
||||||
$port,
|
$port,
|
||||||
$errno,
|
$errno,
|
||||||
|
@ -365,8 +396,9 @@ class SMTP
|
||||||
);
|
);
|
||||||
restore_error_handler();
|
restore_error_handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify we connected properly
|
// Verify we connected properly
|
||||||
if (!is_resource($this->smtp_conn)) {
|
if (!is_resource($connection)) {
|
||||||
$this->setError(
|
$this->setError(
|
||||||
'Failed to connect to server',
|
'Failed to connect to server',
|
||||||
'',
|
'',
|
||||||
|
@ -381,22 +413,19 @@ class SMTP
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$this->edebug('Connection: opened', self::DEBUG_CONNECTION);
|
|
||||||
// SMTP server can take longer to respond, give longer timeout for first read
|
// SMTP server can take longer to respond, give longer timeout for first read
|
||||||
// Windows does not have support for this timeout function
|
// Windows does not have support for this timeout function
|
||||||
if (strpos(PHP_OS, 'WIN') !== 0) {
|
if (strpos(PHP_OS, 'WIN') !== 0) {
|
||||||
$max = (int)ini_get('max_execution_time');
|
$max = (int)ini_get('max_execution_time');
|
||||||
// Don't bother if unlimited
|
// Don't bother if unlimited, or if set_time_limit is disabled
|
||||||
if (0 !== $max && $timeout > $max) {
|
if (0 !== $max && $timeout > $max && strpos(ini_get('disable_functions'), 'set_time_limit') === false) {
|
||||||
@set_time_limit($timeout);
|
@set_time_limit($timeout);
|
||||||
}
|
}
|
||||||
stream_set_timeout($this->smtp_conn, $timeout, 0);
|
stream_set_timeout($connection, $timeout, 0);
|
||||||
}
|
}
|
||||||
// Get any announcement
|
|
||||||
$announce = $this->get_lines();
|
|
||||||
$this->edebug('SERVER -> CLIENT: ' . $announce, self::DEBUG_SERVER);
|
|
||||||
|
|
||||||
return true;
|
return $connection;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -511,7 +540,8 @@ class SMTP
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// Send encoded username and password
|
// Send encoded username and password
|
||||||
if (!$this->sendCommand(
|
if (
|
||||||
|
!$this->sendCommand(
|
||||||
'User & Password',
|
'User & Password',
|
||||||
base64_encode("\0" . $username . "\0" . $password),
|
base64_encode("\0" . $username . "\0" . $password),
|
||||||
235
|
235
|
||||||
|
@ -1058,8 +1088,10 @@ class SMTP
|
||||||
{
|
{
|
||||||
//If SMTP transcripts are left enabled, or debug output is posted online
|
//If SMTP transcripts are left enabled, or debug output is posted online
|
||||||
//it can leak credentials, so hide credentials in all but lowest level
|
//it can leak credentials, so hide credentials in all but lowest level
|
||||||
if (self::DEBUG_LOWLEVEL > $this->do_debug &&
|
if (
|
||||||
in_array($command, ['User & Password', 'Username', 'Password'], true)) {
|
self::DEBUG_LOWLEVEL > $this->do_debug &&
|
||||||
|
in_array($command, ['User & Password', 'Username', 'Password'], true)
|
||||||
|
) {
|
||||||
$this->edebug('CLIENT -> SERVER: [credentials hidden]', self::DEBUG_CLIENT);
|
$this->edebug('CLIENT -> SERVER: [credentials hidden]', self::DEBUG_CLIENT);
|
||||||
} else {
|
} else {
|
||||||
$this->edebug('CLIENT -> SERVER: ' . $data, self::DEBUG_CLIENT);
|
$this->edebug('CLIENT -> SERVER: ' . $data, self::DEBUG_CLIENT);
|
||||||
|
@ -1166,13 +1198,41 @@ class SMTP
|
||||||
$selW = null;
|
$selW = null;
|
||||||
while (is_resource($this->smtp_conn) && !feof($this->smtp_conn)) {
|
while (is_resource($this->smtp_conn) && !feof($this->smtp_conn)) {
|
||||||
//Must pass vars in here as params are by reference
|
//Must pass vars in here as params are by reference
|
||||||
if (!stream_select($selR, $selW, $selW, $this->Timelimit)) {
|
//solution for signals inspired by https://github.com/symfony/symfony/pull/6540
|
||||||
|
set_error_handler([$this, 'errorHandler']);
|
||||||
|
$n = stream_select($selR, $selW, $selW, $this->Timelimit);
|
||||||
|
restore_error_handler();
|
||||||
|
|
||||||
|
if ($n === false) {
|
||||||
|
$message = $this->getError()['detail'];
|
||||||
|
|
||||||
|
$this->edebug(
|
||||||
|
'SMTP -> get_lines(): select failed (' . $message . ')',
|
||||||
|
self::DEBUG_LOWLEVEL
|
||||||
|
);
|
||||||
|
|
||||||
|
//stream_select returns false when the `select` system call is interrupted
|
||||||
|
//by an incoming signal, try the select again
|
||||||
|
if (stripos($message, 'interrupted system call') !== false) {
|
||||||
|
$this->edebug(
|
||||||
|
'SMTP -> get_lines(): retrying stream_select',
|
||||||
|
self::DEBUG_LOWLEVEL
|
||||||
|
);
|
||||||
|
$this->setError('');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$n) {
|
||||||
$this->edebug(
|
$this->edebug(
|
||||||
'SMTP -> get_lines(): select timed-out in (' . $this->Timelimit . ' sec)',
|
'SMTP -> get_lines(): select timed-out in (' . $this->Timelimit . ' sec)',
|
||||||
self::DEBUG_LOWLEVEL
|
self::DEBUG_LOWLEVEL
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Deliberate noise suppression - errors are handled afterwards
|
//Deliberate noise suppression - errors are handled afterwards
|
||||||
$str = @fgets($this->smtp_conn, self::MAX_REPLY_LENGTH);
|
$str = @fgets($this->smtp_conn, self::MAX_REPLY_LENGTH);
|
||||||
$this->edebug('SMTP INBOUND: "' . trim($str) . '"', self::DEBUG_LOWLEVEL);
|
$this->edebug('SMTP INBOUND: "' . trim($str) . '"', self::DEBUG_LOWLEVEL);
|
||||||
|
|
Loading…
Reference in New Issue