mirror of
https://github.com/itflow-org/itflow
synced 2026-03-20 20:54:50 +00:00
Bump PHPMailer from 6.5.3 to 6.7.1
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
[](https://supportukrainenow.org/)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
# PHPMailer – A full-featured email creation and transfer class for PHP
|
# PHPMailer – A full-featured email creation and transfer class for PHP
|
||||||
@@ -8,12 +10,13 @@
|
|||||||
[](https://packagist.org/packages/phpmailer/phpmailer)
|
[](https://packagist.org/packages/phpmailer/phpmailer)
|
||||||
[](https://packagist.org/packages/phpmailer/phpmailer)
|
[](https://packagist.org/packages/phpmailer/phpmailer)
|
||||||
[](https://phpmailer.github.io/PHPMailer/)
|
[](https://phpmailer.github.io/PHPMailer/)
|
||||||
|
[](https://api.securityscorecards.dev/projects/github.com/PHPMailer/PHPMailer)
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
- Probably the world's most popular code for sending email from PHP!
|
- Probably the world's most popular code for sending email from PHP!
|
||||||
- Used by many open-source projects: WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla! and many more
|
- Used by many open-source projects: WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla! and many more
|
||||||
- Integrated SMTP support – send without a local mail server
|
- Integrated SMTP support – send without a local mail server
|
||||||
- Send emails with multiple To, CC, BCC and Reply-to addresses
|
- Send emails with multiple To, CC, BCC, and Reply-to addresses
|
||||||
- Multipart/alternative emails for mail clients that do not read HTML email
|
- Multipart/alternative emails for mail clients that do not read HTML email
|
||||||
- Add attachments, including inline
|
- Add attachments, including inline
|
||||||
- Support for UTF-8 content and 8bit, base64, binary, and quoted-printable encodings
|
- Support for UTF-8 content and 8bit, base64, binary, and quoted-printable encodings
|
||||||
@@ -22,7 +25,7 @@
|
|||||||
- Protects against header injection attacks
|
- Protects against header injection attacks
|
||||||
- Error messages in over 50 languages!
|
- Error messages in over 50 languages!
|
||||||
- DKIM and S/MIME signing support
|
- DKIM and S/MIME signing support
|
||||||
- Compatible with PHP 5.5 and later, including PHP 8.1
|
- Compatible with PHP 5.5 and later, including PHP 8.2
|
||||||
- Namespaced to prevent name clashes
|
- Namespaced to prevent name clashes
|
||||||
- Much more!
|
- Much more!
|
||||||
|
|
||||||
@@ -35,7 +38,7 @@ The PHP `mail()` function usually sends via a local mail server, typically front
|
|||||||
|
|
||||||
*Please* don't be tempted to do it yourself – if you don't use PHPMailer, there are many other excellent libraries that
|
*Please* don't be tempted to do it yourself – if you don't use PHPMailer, there are many other excellent libraries that
|
||||||
you should look at before rolling your own. Try [SwiftMailer](https://swiftmailer.symfony.com/)
|
you should look at before rolling your own. Try [SwiftMailer](https://swiftmailer.symfony.com/)
|
||||||
, [Laminas/Mail](https://docs.laminas.dev/laminas-mail/), [ZetaComponents](https://github.com/zetacomponents/Mail) etc.
|
, [Laminas/Mail](https://docs.laminas.dev/laminas-mail/), [ZetaComponents](https://github.com/zetacomponents/Mail), etc.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
This software is distributed under the [LGPL 2.1](http://www.gnu.org/licenses/lgpl-2.1.html) license, along with the [GPL Cooperation Commitment](https://gplcc.github.io/gplcc/). Please read [LICENSE](https://github.com/PHPMailer/PHPMailer/blob/master/LICENSE) for information on the software availability and distribution.
|
This software is distributed under the [LGPL 2.1](http://www.gnu.org/licenses/lgpl-2.1.html) license, along with the [GPL Cooperation Commitment](https://gplcc.github.io/gplcc/). Please read [LICENSE](https://github.com/PHPMailer/PHPMailer/blob/master/LICENSE) for information on the software availability and distribution.
|
||||||
@@ -44,7 +47,7 @@ This software is distributed under the [LGPL 2.1](http://www.gnu.org/licenses/lg
|
|||||||
PHPMailer is available on [Packagist](https://packagist.org/packages/phpmailer/phpmailer) (using semantic versioning), and installation via [Composer](https://getcomposer.org) is the recommended way to install PHPMailer. Just add this line to your `composer.json` file:
|
PHPMailer is available on [Packagist](https://packagist.org/packages/phpmailer/phpmailer) (using semantic versioning), and installation via [Composer](https://getcomposer.org) is the recommended way to install PHPMailer. Just add this line to your `composer.json` file:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"phpmailer/phpmailer": "^6.5"
|
"phpmailer/phpmailer": "^6.7.1"
|
||||||
```
|
```
|
||||||
|
|
||||||
or run
|
or run
|
||||||
@@ -133,14 +136,14 @@ try {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
You'll find plenty to play with in the [examples](https://github.com/PHPMailer/PHPMailer/tree/master/examples) folder, which covers many common scenarios including sending through gmail, building contact forms, sending to mailing lists, and more.
|
You'll find plenty to play with in the [examples](https://github.com/PHPMailer/PHPMailer/tree/master/examples) folder, which covers many common scenarios including sending through Gmail, building contact forms, sending to mailing lists, and more.
|
||||||
|
|
||||||
If you are re-using the instance (e.g. when sending to a mailing list), you may need to clear the recipient list to avoid sending duplicate messages. See [the mailing list example](https://github.com/PHPMailer/PHPMailer/blob/master/examples/mailing_list.phps) for further guidance.
|
If you are re-using the instance (e.g. when sending to a mailing list), you may need to clear the recipient list to avoid sending duplicate messages. See [the mailing list example](https://github.com/PHPMailer/PHPMailer/blob/master/examples/mailing_list.phps) for further guidance.
|
||||||
|
|
||||||
That's it. You should now be ready to use PHPMailer!
|
That's it. You should now be ready to use PHPMailer!
|
||||||
|
|
||||||
## Localization
|
## Localization
|
||||||
PHPMailer defaults to English, but in the [language](https://github.com/PHPMailer/PHPMailer/tree/master/language/) folder you'll find many translations for PHPMailer error messages that you may encounter. Their filenames contain [ISO 639-1](http://en.wikipedia.org/wiki/ISO_639-1) language code for the translations, for example `fr` for French. To specify a language, you need to tell PHPMailer which one to use, like this:
|
PHPMailer defaults to English, but in the [language](https://github.com/PHPMailer/PHPMailer/tree/master/language/) folder, you'll find many translations for PHPMailer error messages that you may encounter. Their filenames contain [ISO 639-1](http://en.wikipedia.org/wiki/ISO_639-1) language code for the translations, for example `fr` for French. To specify a language, you need to tell PHPMailer which one to use, like this:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
//To load the French version
|
//To load the French version
|
||||||
@@ -175,9 +178,9 @@ Please disclose any vulnerabilities found responsibly – report security issues
|
|||||||
See [SECURITY](https://github.com/PHPMailer/PHPMailer/tree/master/SECURITY.md) and [PHPMailer's security advisories on GitHub](https://github.com/PHPMailer/PHPMailer/security).
|
See [SECURITY](https://github.com/PHPMailer/PHPMailer/tree/master/SECURITY.md) and [PHPMailer's security advisories on GitHub](https://github.com/PHPMailer/PHPMailer/security).
|
||||||
|
|
||||||
## 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).
|
||||||
|
|
||||||
We're particularly interested in fixing edge-cases, expanding test coverage and updating translations.
|
We're particularly interested in fixing edge cases, expanding test coverage, and updating translations.
|
||||||
|
|
||||||
If you found a mistake in the docs, or want to add something, go ahead and amend the wiki – anyone can edit it.
|
If you found a mistake in the docs, or want to add something, go ahead and amend the wiki – anyone can edit it.
|
||||||
|
|
||||||
@@ -201,7 +204,7 @@ Donations are very welcome, whether in beer 🍺, T-shirts 👕, or cold, hard c
|
|||||||
Available as part of the Tidelift Subscription.
|
Available as part of the Tidelift Subscription.
|
||||||
|
|
||||||
The maintainers of PHPMailer and thousands of other packages are working with Tidelift to deliver commercial
|
The maintainers of PHPMailer and thousands of other packages are working with Tidelift to deliver commercial
|
||||||
support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and
|
support and maintenance for the open-source packages you use to build your applications. Save time, reduce risk, and
|
||||||
improve code health, while paying the maintainers of the exact packages you
|
improve code health, while paying the maintainers of the exact packages you
|
||||||
use. [Learn more.](https://tidelift.com/subscription/pkg/packagist-phpmailer-phpmailer?utm_source=packagist-phpmailer-phpmailer&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
|
use. [Learn more.](https://tidelift.com/subscription/pkg/packagist-phpmailer-phpmailer?utm_source=packagist-phpmailer-phpmailer&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
|
||||||
|
|
||||||
@@ -219,9 +222,9 @@ See [changelog](changelog.md).
|
|||||||
### What's changed since moving from SourceForge?
|
### What's changed since moving from SourceForge?
|
||||||
- Official successor to the SourceForge and Google Code projects.
|
- Official successor to the SourceForge and Google Code projects.
|
||||||
- Test suite.
|
- Test suite.
|
||||||
- Continuous integration with Github Actions.
|
- Continuous integration with GitHub Actions.
|
||||||
- Composer support.
|
- Composer support.
|
||||||
- Public development.
|
- Public development.
|
||||||
- Additional languages and language strings.
|
- Additional languages and language strings.
|
||||||
- CRAM-MD5 authentication support.
|
- CRAM-MD5 authentication support.
|
||||||
- Preserves full repo history of authors, commits and branches from the original SourceForge project.
|
- Preserves full repo history of authors, commits, and branches from the original SourceForge project.
|
||||||
|
|||||||
1
plugins/PHPMailer/VERSION
Normal file
1
plugins/PHPMailer/VERSION
Normal file
@@ -0,0 +1 @@
|
|||||||
|
6.7.1
|
||||||
@@ -1 +0,0 @@
|
|||||||
6.5.3
|
|
||||||
@@ -25,6 +25,11 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"config": {
|
||||||
|
"allow-plugins": {
|
||||||
|
"dealerdirect/phpcodesniffer-composer-installer": true
|
||||||
|
}
|
||||||
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=5.5.0",
|
"php": ">=5.5.0",
|
||||||
"ext-ctype": "*",
|
"ext-ctype": "*",
|
||||||
@@ -32,21 +37,23 @@
|
|||||||
"ext-hash": "*"
|
"ext-hash": "*"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
|
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.2",
|
||||||
"doctrine/annotations": "^1.2",
|
"doctrine/annotations": "^1.2.6 || ^1.13.3",
|
||||||
"php-parallel-lint/php-console-highlighter": "^0.5.0",
|
"php-parallel-lint/php-console-highlighter": "^1.0.0",
|
||||||
"php-parallel-lint/php-parallel-lint": "^1.3",
|
"php-parallel-lint/php-parallel-lint": "^1.3.2",
|
||||||
"phpcompatibility/php-compatibility": "^9.3.5",
|
"phpcompatibility/php-compatibility": "^9.3.5",
|
||||||
"roave/security-advisories": "dev-latest",
|
"roave/security-advisories": "dev-latest",
|
||||||
"squizlabs/php_codesniffer": "^3.6.0",
|
"squizlabs/php_codesniffer": "^3.7.1",
|
||||||
"yoast/phpunit-polyfills": "^1.0.0"
|
"yoast/phpunit-polyfills": "^1.0.4"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses",
|
"ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses",
|
||||||
|
"ext-openssl": "Needed for secure SMTP sending and DKIM signing",
|
||||||
|
"greew/oauth2-azure-provider": "Needed for Microsoft Azure XOAUTH2 authentication",
|
||||||
"hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
|
"hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
|
||||||
"league/oauth2-google": "Needed for Google XOAUTH2 authentication",
|
"league/oauth2-google": "Needed for Google XOAUTH2 authentication",
|
||||||
"psr/log": "For optional PSR-3 debug logging",
|
"psr/log": "For optional PSR-3 debug logging",
|
||||||
"stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
|
"thenetworg/oauth2-azure": "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": {
|
||||||
@@ -65,7 +72,7 @@
|
|||||||
"test": "./vendor/bin/phpunit --no-coverage",
|
"test": "./vendor/bin/phpunit --no-coverage",
|
||||||
"coverage": "./vendor/bin/phpunit",
|
"coverage": "./vendor/bin/phpunit",
|
||||||
"lint": [
|
"lint": [
|
||||||
"@php ./vendor/php-parallel-lint/php-parallel-lint/parallel-lint . -e php,phps --exclude vendor --exclude .git --exclude build"
|
"@php ./vendor/php-parallel-lint/php-parallel-lint/parallel-lint . --show-deprecated -e php,phps --exclude vendor --exclude .git --exclude build"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,14 +44,31 @@ use League\OAuth2\Client\Provider\Google;
|
|||||||
use Hayageek\OAuth2\Client\Provider\Yahoo;
|
use Hayageek\OAuth2\Client\Provider\Yahoo;
|
||||||
//@see https://github.com/stevenmaguire/oauth2-microsoft
|
//@see https://github.com/stevenmaguire/oauth2-microsoft
|
||||||
use Stevenmaguire\OAuth2\Client\Provider\Microsoft;
|
use Stevenmaguire\OAuth2\Client\Provider\Microsoft;
|
||||||
|
//@see https://github.com/greew/oauth2-azure-provider
|
||||||
|
use Greew\OAuth2\Client\Provider\Azure;
|
||||||
|
|
||||||
if (!isset($_GET['code']) && !isset($_GET['provider'])) {
|
if (!isset($_GET['code']) && !isset($_POST['provider'])) {
|
||||||
?>
|
?>
|
||||||
<html>
|
<html>
|
||||||
<body>Select Provider:<br>
|
<body>
|
||||||
<a href='?provider=Google'>Google</a><br>
|
<form method="post">
|
||||||
<a href='?provider=Yahoo'>Yahoo</a><br>
|
<h1>Select Provider</h1>
|
||||||
<a href='?provider=Microsoft'>Microsoft/Outlook/Hotmail/Live/Office365</a><br>
|
<input type="radio" name="provider" value="Google" id="providerGoogle">
|
||||||
|
<label for="providerGoogle">Google</label><br>
|
||||||
|
<input type="radio" name="provider" value="Yahoo" id="providerYahoo">
|
||||||
|
<label for="providerYahoo">Yahoo</label><br>
|
||||||
|
<input type="radio" name="provider" value="Microsoft" id="providerMicrosoft">
|
||||||
|
<label for="providerMicrosoft">Microsoft</label><br>
|
||||||
|
<input type="radio" name="provider" value="Azure" id="providerAzure">
|
||||||
|
<label for="providerAzure">Azure</label><br>
|
||||||
|
<h1>Enter id and secret</h1>
|
||||||
|
<p>These details are obtained by setting up an app in your provider's developer console.
|
||||||
|
</p>
|
||||||
|
<p>ClientId: <input type="text" name="clientId"><p>
|
||||||
|
<p>ClientSecret: <input type="text" name="clientSecret"></p>
|
||||||
|
<p>TenantID (only relevant for Azure): <input type="text" name="tenantId"></p>
|
||||||
|
<input type="submit" value="Continue">
|
||||||
|
</form>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
<?php
|
<?php
|
||||||
@@ -63,21 +80,29 @@ require 'vendor/autoload.php';
|
|||||||
session_start();
|
session_start();
|
||||||
|
|
||||||
$providerName = '';
|
$providerName = '';
|
||||||
|
$clientId = '';
|
||||||
|
$clientSecret = '';
|
||||||
|
$tenantId = '';
|
||||||
|
|
||||||
if (array_key_exists('provider', $_GET)) {
|
if (array_key_exists('provider', $_POST)) {
|
||||||
$providerName = $_GET['provider'];
|
$providerName = $_POST['provider'];
|
||||||
|
$clientId = $_POST['clientId'];
|
||||||
|
$clientSecret = $_POST['clientSecret'];
|
||||||
|
$tenantId = $_POST['tenantId'];
|
||||||
$_SESSION['provider'] = $providerName;
|
$_SESSION['provider'] = $providerName;
|
||||||
|
$_SESSION['clientId'] = $clientId;
|
||||||
|
$_SESSION['clientSecret'] = $clientSecret;
|
||||||
|
$_SESSION['tenantId'] = $tenantId;
|
||||||
} elseif (array_key_exists('provider', $_SESSION)) {
|
} elseif (array_key_exists('provider', $_SESSION)) {
|
||||||
$providerName = $_SESSION['provider'];
|
$providerName = $_SESSION['provider'];
|
||||||
}
|
$clientId = $_SESSION['clientId'];
|
||||||
if (!in_array($providerName, ['Google', 'Microsoft', 'Yahoo'])) {
|
$clientSecret = $_SESSION['clientSecret'];
|
||||||
exit('Only Google, Microsoft and Yahoo OAuth2 providers are currently supported in this script.');
|
$tenantId = $_SESSION['tenantId'];
|
||||||
}
|
}
|
||||||
|
|
||||||
//These details are obtained by setting up an app in the Google developer console,
|
//If you don't want to use the built-in form, set your client id and secret here
|
||||||
//or whichever provider you're using.
|
//$clientId = 'RANDOMCHARS-----duv1n2.apps.googleusercontent.com';
|
||||||
$clientId = 'RANDOMCHARS-----duv1n2.apps.googleusercontent.com';
|
//$clientSecret = 'RANDOMCHARS-----lGyjPcRtvP';
|
||||||
$clientSecret = 'RANDOMCHARS-----lGyjPcRtvP';
|
|
||||||
|
|
||||||
//If this automatic URL doesn't work, set it yourself manually to the URL of this script
|
//If this automatic URL doesn't work, set it yourself manually to the URL of this script
|
||||||
$redirectUri = (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
|
$redirectUri = (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
|
||||||
@@ -114,6 +139,17 @@ switch ($providerName) {
|
|||||||
]
|
]
|
||||||
];
|
];
|
||||||
break;
|
break;
|
||||||
|
case 'Azure':
|
||||||
|
$params['tenantId'] = $tenantId;
|
||||||
|
|
||||||
|
$provider = new Azure($params);
|
||||||
|
$options = [
|
||||||
|
'scope' => [
|
||||||
|
'https://outlook.office.com/SMTP.Send',
|
||||||
|
'offline_access'
|
||||||
|
]
|
||||||
|
];
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $provider) {
|
if (null === $provider) {
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Chinese PHPMailer language file: refer to English translation for definitive list
|
|
||||||
* @package PHPMailer
|
|
||||||
* @author LiuXin <http://www.80x86.cn/blog/>
|
|
||||||
*/
|
|
||||||
|
|
||||||
$PHPMAILER_LANG['authenticate'] = 'SMTP 错误:身份验证失败。';
|
|
||||||
$PHPMAILER_LANG['connect_host'] = 'SMTP 错误: 不能连接SMTP主机。';
|
|
||||||
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 错误: 数据不可接受。';
|
|
||||||
//$PHPMAILER_LANG['empty_message'] = 'Message body empty';
|
|
||||||
$PHPMAILER_LANG['encoding'] = '未知编码:';
|
|
||||||
$PHPMAILER_LANG['execute'] = '不能执行: ';
|
|
||||||
$PHPMAILER_LANG['file_access'] = '不能访问文件:';
|
|
||||||
$PHPMAILER_LANG['file_open'] = '文件错误:不能打开文件:';
|
|
||||||
$PHPMAILER_LANG['from_failed'] = '下面的发送地址邮件发送失败了: ';
|
|
||||||
$PHPMAILER_LANG['instantiate'] = '不能实现mail方法。';
|
|
||||||
//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: ';
|
|
||||||
$PHPMAILER_LANG['mailer_not_supported'] = ' 您所选择的发送邮件的方法并不支持。';
|
|
||||||
$PHPMAILER_LANG['provide_address'] = '您必须提供至少一个 收信人的email地址。';
|
|
||||||
$PHPMAILER_LANG['recipients_failed'] = 'SMTP 错误: 下面的 收件人失败了: ';
|
|
||||||
//$PHPMAILER_LANG['signing'] = 'Signing Error: ';
|
|
||||||
//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.';
|
|
||||||
//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: ';
|
|
||||||
//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: ';
|
|
||||||
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
|
||||||
@@ -14,16 +14,22 @@ $PHPMAILER_LANG['data_not_accepted'] = 'SMTP fejl: Data blev ikke accepteret.
|
|||||||
$PHPMAILER_LANG['empty_message'] = 'Meddelelsen er uden indhold';
|
$PHPMAILER_LANG['empty_message'] = 'Meddelelsen er uden indhold';
|
||||||
$PHPMAILER_LANG['encoding'] = 'Ukendt encode-format: ';
|
$PHPMAILER_LANG['encoding'] = 'Ukendt encode-format: ';
|
||||||
$PHPMAILER_LANG['execute'] = 'Kunne ikke afvikle: ';
|
$PHPMAILER_LANG['execute'] = 'Kunne ikke afvikle: ';
|
||||||
|
$PHPMAILER_LANG['extension_missing'] = 'Udvidelse mangler: ';
|
||||||
$PHPMAILER_LANG['file_access'] = 'Kunne ikke tilgå filen: ';
|
$PHPMAILER_LANG['file_access'] = 'Kunne ikke tilgå filen: ';
|
||||||
$PHPMAILER_LANG['file_open'] = 'Fil fejl: Kunne ikke åbne filen: ';
|
$PHPMAILER_LANG['file_open'] = 'Fil fejl: Kunne ikke åbne filen: ';
|
||||||
$PHPMAILER_LANG['from_failed'] = 'Følgende afsenderadresse er forkert: ';
|
$PHPMAILER_LANG['from_failed'] = 'Følgende afsenderadresse er forkert: ';
|
||||||
$PHPMAILER_LANG['instantiate'] = 'Email funktionen kunne ikke initialiseres.';
|
$PHPMAILER_LANG['instantiate'] = 'Email funktionen kunne ikke initialiseres.';
|
||||||
$PHPMAILER_LANG['invalid_address'] = 'Udgyldig adresse: ';
|
$PHPMAILER_LANG['invalid_address'] = 'Udgyldig adresse: ';
|
||||||
|
$PHPMAILER_LANG['invalid_header'] = 'Ugyldig header navn eller værdi';
|
||||||
|
$PHPMAILER_LANG['invalid_hostentry'] = 'Ugyldig hostentry: ';
|
||||||
|
$PHPMAILER_LANG['invalid_host'] = 'Ugyldig vært: ';
|
||||||
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer understøttes ikke.';
|
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer understøttes ikke.';
|
||||||
$PHPMAILER_LANG['provide_address'] = 'Indtast mindst en modtagers email adresse.';
|
$PHPMAILER_LANG['provide_address'] = 'Indtast mindst en modtagers email adresse.';
|
||||||
$PHPMAILER_LANG['recipients_failed'] = 'SMTP fejl: Følgende modtagere er forkerte: ';
|
$PHPMAILER_LANG['recipients_failed'] = 'SMTP fejl: Følgende modtagere fejlede: ';
|
||||||
$PHPMAILER_LANG['signing'] = 'Signeringsfejl: ';
|
$PHPMAILER_LANG['signing'] = 'Signeringsfejl: ';
|
||||||
|
$PHPMAILER_LANG['smtp_code'] = 'SMTP kode: ';
|
||||||
|
$PHPMAILER_LANG['smtp_code_ex'] = 'Yderligere SMTP info: ';
|
||||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fejlede.';
|
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fejlede.';
|
||||||
|
$PHPMAILER_LANG['smtp_detail'] = 'Detalje: ';
|
||||||
$PHPMAILER_LANG['smtp_error'] = 'SMTP server fejl: ';
|
$PHPMAILER_LANG['smtp_error'] = 'SMTP server fejl: ';
|
||||||
$PHPMAILER_LANG['variable_set'] = 'Kunne ikke definere eller nulstille variablen: ';
|
$PHPMAILER_LANG['variable_set'] = 'Kunne ikke definere eller nulstille variablen: ';
|
||||||
$PHPMAILER_LANG['extension_missing'] = 'Udvidelse mangler: ';
|
|
||||||
|
|||||||
@@ -5,22 +5,29 @@
|
|||||||
* @package PHPMailer
|
* @package PHPMailer
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$PHPMAILER_LANG['authenticate'] = 'SMTP Σφάλμα: Αδυναμία πιστοποίησης (authentication).';
|
$PHPMAILER_LANG['authenticate'] = 'Σφάλμα SMTP: Αδυναμία πιστοποίησης.';
|
||||||
$PHPMAILER_LANG['connect_host'] = 'SMTP Σφάλμα: Αδυναμία σύνδεσης στον SMTP-Host.';
|
$PHPMAILER_LANG['buggy_php'] = 'Η έκδοση PHP που χρησιμοποιείτε παρουσιάζει σφάλμα που μπορεί να έχει ως αποτέλεσμα κατεστραμένα μηνύματα. Για να το διορθώσετε, αλλάξτε τον τρόπο αποστολής σε SMTP, απενεργοποιήστε την επιλογή mail.add_x_header στο αρχείο php.ini, αλλάξτε λειτουργικό σε MacOS ή Linux ή αναβαθμίστε την PHP σε έκδοση 7.0.17+ ή 7.1.3+.';
|
||||||
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Σφάλμα: Τα δεδομένα δεν έγιναν αποδεκτά.';
|
$PHPMAILER_LANG['connect_host'] = 'Σφάλμα SMTP: Αδυναμία σύνδεσης με τον φιλοξενητή SMTP.';
|
||||||
$PHPMAILER_LANG['empty_message'] = 'Το E-Mail δεν έχει περιεχόμενο .';
|
$PHPMAILER_LANG['data_not_accepted'] = 'Σφάλμα SMTP: Μη αποδεκτά δεδομένα.';
|
||||||
$PHPMAILER_LANG['encoding'] = 'Αγνωστο Encoding-Format: ';
|
$PHPMAILER_LANG['empty_message'] = 'Η ηλεκτρονική επιστολή δεν έχει περιεχόμενο.';
|
||||||
$PHPMAILER_LANG['execute'] = 'Αδυναμία εκτέλεσης ακόλουθης εντολής: ';
|
$PHPMAILER_LANG['encoding'] = 'Άγνωστη μορφή κωδικοποίησης: ';
|
||||||
$PHPMAILER_LANG['file_access'] = 'Αδυναμία προσπέλασης του αρχείου: ';
|
$PHPMAILER_LANG['execute'] = 'Αδυναμία εκτέλεσης: ';
|
||||||
$PHPMAILER_LANG['file_open'] = 'Σφάλμα Αρχείου: Δεν είναι δυνατό το άνοιγμα του ακόλουθου αρχείου: ';
|
$PHPMAILER_LANG['extension_missing'] = 'Απουσία επέκτασης: ';
|
||||||
$PHPMAILER_LANG['from_failed'] = 'Η παρακάτω διεύθυνση αποστολέα δεν είναι σωστή: ';
|
$PHPMAILER_LANG['file_access'] = 'Αδυναμία πρόσβασης στο αρχείο: ';
|
||||||
$PHPMAILER_LANG['instantiate'] = 'Αδυναμία εκκίνησης Mail function.';
|
$PHPMAILER_LANG['file_open'] = 'Σφάλμα Αρχείου: Αδυναμία ανοίγματος αρχείου: ';
|
||||||
$PHPMAILER_LANG['invalid_address'] = 'Το μήνυμα δεν εστάλη, η διεύθυνση δεν είναι έγκυρη: ';
|
$PHPMAILER_LANG['from_failed'] = 'Η ακόλουθη διεύθυνση αποστολέα δεν είναι σωστή: ';
|
||||||
|
$PHPMAILER_LANG['instantiate'] = 'Αδυναμία εκκίνησης συνάρτησης Mail.';
|
||||||
|
$PHPMAILER_LANG['invalid_address'] = 'Μη έγκυρη διεύθυνση: ';
|
||||||
|
$PHPMAILER_LANG['invalid_header'] = 'Μη έγκυρο όνομα κεφαλίδας ή τιμή';
|
||||||
|
$PHPMAILER_LANG['invalid_hostentry'] = 'Μη έγκυρη εισαγωγή φιλοξενητή: ';
|
||||||
|
$PHPMAILER_LANG['invalid_host'] = 'Μη έγκυρος φιλοξενητής: ';
|
||||||
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer δεν υποστηρίζεται.';
|
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer δεν υποστηρίζεται.';
|
||||||
$PHPMAILER_LANG['provide_address'] = 'Παρακαλούμε δώστε τουλάχιστον μια e-mail διεύθυνση παραλήπτη.';
|
$PHPMAILER_LANG['provide_address'] = 'Δώστε τουλάχιστον μια ηλεκτρονική διεύθυνση παραλήπτη.';
|
||||||
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Σφάλμα: Οι παρακάτω διευθύνσεις παραλήπτη δεν είναι έγκυρες: ';
|
$PHPMAILER_LANG['recipients_failed'] = 'Σφάλμα SMTP: Οι παρακάτω διευθύνσεις παραλήπτη δεν είναι έγκυρες: ';
|
||||||
$PHPMAILER_LANG['signing'] = 'Σφάλμα υπογραφής: ';
|
$PHPMAILER_LANG['signing'] = 'Σφάλμα υπογραφής: ';
|
||||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'Αποτυχία σύνδεσης στον SMTP Server.';
|
$PHPMAILER_LANG['smtp_code'] = 'Κώδικάς SMTP: ';
|
||||||
$PHPMAILER_LANG['smtp_error'] = 'Σφάλμα από τον SMTP Server: ';
|
$PHPMAILER_LANG['smtp_code_ex'] = 'Πρόσθετες πληροφορίες SMTP: ';
|
||||||
$PHPMAILER_LANG['variable_set'] = 'Αδυναμία ορισμού ή αρχικοποίησης μεταβλητής: ';
|
$PHPMAILER_LANG['smtp_connect_failed'] = 'Αποτυχία σύνδεσης SMTP.';
|
||||||
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
$PHPMAILER_LANG['smtp_detail'] = 'Λεπτομέρεια: ';
|
||||||
|
$PHPMAILER_LANG['smtp_error'] = 'Σφάλμα με τον διακομιστή SMTP: ';
|
||||||
|
$PHPMAILER_LANG['variable_set'] = 'Αδυναμία ορισμού ή επαναφοράς μεταβλητής: ';
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
* 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
|
||||||
* @author Matt Sturdy <matt.sturdy@gmail.com>
|
* @author Matt Sturdy <matt.sturdy@gmail.com>
|
||||||
|
* @author Crystopher Glodzienski Cardoso <crystopher.glodzienski@gmail.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$PHPMAILER_LANG['authenticate'] = 'Error SMTP: Imposible autentificar.';
|
$PHPMAILER_LANG['authenticate'] = 'Error SMTP: Imposible autentificar.';
|
||||||
@@ -25,3 +26,6 @@ $PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falló.';
|
|||||||
$PHPMAILER_LANG['smtp_error'] = 'Error del servidor SMTP: ';
|
$PHPMAILER_LANG['smtp_error'] = 'Error del servidor SMTP: ';
|
||||||
$PHPMAILER_LANG['variable_set'] = 'No se pudo configurar la variable: ';
|
$PHPMAILER_LANG['variable_set'] = 'No se pudo configurar la variable: ';
|
||||||
$PHPMAILER_LANG['extension_missing'] = 'Extensión faltante: ';
|
$PHPMAILER_LANG['extension_missing'] = 'Extensión faltante: ';
|
||||||
|
$PHPMAILER_LANG['smtp_code'] = 'Código del servidor SMTP: ';
|
||||||
|
$PHPMAILER_LANG['smtp_code_ex'] = 'Información adicional del servidor SMTP: ';
|
||||||
|
$PHPMAILER_LANG['invalid_header'] = 'Nombre o valor de encabezado no válido';
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
$PHPMAILER_LANG['authenticate'] = 'Erreur SMTP : échec de l’authentification.';
|
$PHPMAILER_LANG['authenticate'] = 'Erreur SMTP : échec de l’authentification.';
|
||||||
$PHPMAILER_LANG['buggy_php'] = 'Votre version de PHP est affectée par un bogue qui peut entraîner des messages corrompus. Pour résoudre ce problème, passez à l’envoi par SMTP, désactivez l’option mail.add_x_header dans le fichier php.ini, passez à MacOS ou Linux, ou passez PHP à la version 7.0.17+ ou 7.1.3+.';
|
$PHPMAILER_LANG['buggy_php'] = 'Votre version de PHP est affectée par un bug qui peut entraîner des messages corrompus. Pour résoudre ce problème, passez à l’envoi par SMTP, désactivez l’option mail.add_x_header dans le fichier php.ini, passez à MacOS ou Linux, ou passez PHP à la version 7.0.17+ ou 7.1.3+.';
|
||||||
$PHPMAILER_LANG['connect_host'] = 'Erreur SMTP : impossible de se connecter au serveur SMTP.';
|
$PHPMAILER_LANG['connect_host'] = 'Erreur SMTP : impossible de se connecter au serveur SMTP.';
|
||||||
$PHPMAILER_LANG['data_not_accepted'] = 'Erreur SMTP : données incorrectes.';
|
$PHPMAILER_LANG['data_not_accepted'] = 'Erreur SMTP : données incorrectes.';
|
||||||
$PHPMAILER_LANG['empty_message'] = 'Corps du message vide.';
|
$PHPMAILER_LANG['empty_message'] = 'Corps du message vide.';
|
||||||
|
|||||||
27
plugins/PHPMailer/language/phpmailer.lang-mn.php
Normal file
27
plugins/PHPMailer/language/phpmailer.lang-mn.php
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mongolian PHPMailer language file: refer to English translation for definitive list
|
||||||
|
* @package PHPMailer
|
||||||
|
* @author @wispas
|
||||||
|
*/
|
||||||
|
|
||||||
|
$PHPMAILER_LANG['authenticate'] = 'Алдаа SMTP: Холбогдож чадсангүй.';
|
||||||
|
$PHPMAILER_LANG['connect_host'] = 'Алдаа SMTP: SMTP- сервертэй холбогдож болохгүй байна.';
|
||||||
|
$PHPMAILER_LANG['data_not_accepted'] = 'Алдаа SMTP: зөвшөөрөгдсөнгүй.';
|
||||||
|
$PHPMAILER_LANG['encoding'] = 'Тодорхойгүй кодчилол: ';
|
||||||
|
$PHPMAILER_LANG['execute'] = 'Коммандыг гүйцэтгэх боломжгүй байна: ';
|
||||||
|
$PHPMAILER_LANG['file_access'] = 'Файлд хандах боломжгүй байна: ';
|
||||||
|
$PHPMAILER_LANG['file_open'] = 'Файлын алдаа: файлыг нээх боломжгүй байна: ';
|
||||||
|
$PHPMAILER_LANG['from_failed'] = 'Илгээгчийн хаяг буруу байна: ';
|
||||||
|
$PHPMAILER_LANG['instantiate'] = 'Mail () функцийг ажиллуулах боломжгүй байна.';
|
||||||
|
$PHPMAILER_LANG['provide_address'] = 'Хүлээн авагчийн имэйл хаягийг оруулна уу.';
|
||||||
|
$PHPMAILER_LANG['mailer_not_supported'] = ' — мэйл серверийг дэмжсэнгүй.';
|
||||||
|
$PHPMAILER_LANG['recipients_failed'] = 'Алдаа SMTP: ийм хаягийг илгээж чадсангүй: ';
|
||||||
|
$PHPMAILER_LANG['empty_message'] = 'Хоосон мессэж';
|
||||||
|
$PHPMAILER_LANG['invalid_address'] = 'И-Мэйл буруу форматтай тул илгээх боломжгүй: ';
|
||||||
|
$PHPMAILER_LANG['signing'] = 'Гарын үсгийн алдаа: ';
|
||||||
|
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP сервертэй холбогдоход алдаа гарлаа';
|
||||||
|
$PHPMAILER_LANG['smtp_error'] = 'SMTP серверийн алдаа: ';
|
||||||
|
$PHPMAILER_LANG['variable_set'] = 'Хувьсагчийг тохируулах эсвэл дахин тохируулах боломжгүй байна: ';
|
||||||
|
$PHPMAILER_LANG['extension_missing'] = 'Өргөтгөл байхгүй: ';
|
||||||
@@ -9,19 +9,18 @@ $PHPMAILER_LANG['authenticate'] = 'Błąd SMTP: Nie można przeprowadzi
|
|||||||
$PHPMAILER_LANG['connect_host'] = 'Błąd SMTP: Nie można połączyć się z wybranym hostem.';
|
$PHPMAILER_LANG['connect_host'] = 'Błąd SMTP: Nie można połączyć się z wybranym hostem.';
|
||||||
$PHPMAILER_LANG['data_not_accepted'] = 'Błąd SMTP: Dane nie zostały przyjęte.';
|
$PHPMAILER_LANG['data_not_accepted'] = 'Błąd SMTP: Dane nie zostały przyjęte.';
|
||||||
$PHPMAILER_LANG['empty_message'] = 'Wiadomość jest pusta.';
|
$PHPMAILER_LANG['empty_message'] = 'Wiadomość jest pusta.';
|
||||||
$PHPMAILER_LANG['encoding'] = 'Nieznany sposób kodowania znaków: ';
|
$PHPMAILER_LANG['encoding'] = 'Błędny sposób kodowania znaków: ';
|
||||||
$PHPMAILER_LANG['execute'] = 'Nie można uruchomić: ';
|
$PHPMAILER_LANG['execute'] = 'Nie można uruchomić: ';
|
||||||
$PHPMAILER_LANG['file_access'] = 'Brak dostępu do pliku: ';
|
$PHPMAILER_LANG['file_access'] = 'Brak dostępu do pliku: ';
|
||||||
$PHPMAILER_LANG['file_open'] = 'Nie można otworzyć pliku: ';
|
$PHPMAILER_LANG['file_open'] = 'Nie można otworzyć pliku: ';
|
||||||
$PHPMAILER_LANG['from_failed'] = 'Następujący adres Nadawcy jest nieprawidłowy: ';
|
$PHPMAILER_LANG['from_failed'] = 'Następujący adres nadawcy jest nieprawidłowy lub nie istnieje: ';
|
||||||
$PHPMAILER_LANG['instantiate'] = 'Nie można wywołać funkcji mail(). Sprawdź konfigurację serwera.';
|
$PHPMAILER_LANG['instantiate'] = 'Nie można wywołać funkcji mail(). Sprawdź konfigurację serwera.';
|
||||||
$PHPMAILER_LANG['invalid_address'] = 'Nie można wysłać wiadomości, ' .
|
$PHPMAILER_LANG['invalid_address'] = 'Nie można wysłać wiadomości, ' . 'następujący adres odbiorcy jest nieprawidłowy lub nie istnieje: ';
|
||||||
'następujący adres Odbiorcy jest nieprawidłowy: ';
|
$PHPMAILER_LANG['provide_address'] = 'Należy podać prawidłowy adres email odbiorcy.';
|
||||||
$PHPMAILER_LANG['provide_address'] = 'Należy podać prawidłowy adres email Odbiorcy.';
|
|
||||||
$PHPMAILER_LANG['mailer_not_supported'] = 'Wybrana metoda wysyłki wiadomości nie jest obsługiwana.';
|
$PHPMAILER_LANG['mailer_not_supported'] = 'Wybrana metoda wysyłki wiadomości nie jest obsługiwana.';
|
||||||
$PHPMAILER_LANG['recipients_failed'] = 'Błąd SMTP: Następujący odbiorcy są nieprawidłowi: ';
|
$PHPMAILER_LANG['recipients_failed'] = 'Błąd SMTP: Następujący odbiorcy są nieprawidłowi lub nie istnieją: ';
|
||||||
$PHPMAILER_LANG['signing'] = 'Błąd podpisywania wiadomości: ';
|
$PHPMAILER_LANG['signing'] = 'Błąd podpisywania wiadomości: ';
|
||||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() zakończone niepowodzeniem.';
|
$PHPMAILER_LANG['smtp_connect_failed'] = 'Wywołanie funkcji SMTP Connect() zostało zakończone niepowodzeniem.';
|
||||||
$PHPMAILER_LANG['smtp_error'] = 'Błąd SMTP: ';
|
$PHPMAILER_LANG['smtp_error'] = 'Błąd SMTP: ';
|
||||||
$PHPMAILER_LANG['variable_set'] = 'Nie można ustawić lub zmodyfikować zmiennej: ';
|
$PHPMAILER_LANG['variable_set'] = 'Nie można ustawić lub zmodyfikować zmiennej: ';
|
||||||
$PHPMAILER_LANG['extension_missing'] = 'Brakujące rozszerzenie: ';
|
$PHPMAILER_LANG['extension_missing'] = 'Brakujące rozszerzenie: ';
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ use League\OAuth2\Client\Token\AccessToken;
|
|||||||
*
|
*
|
||||||
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
|
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
|
||||||
*/
|
*/
|
||||||
class OAuth
|
class OAuth implements OAuthTokenProvider
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* An instance of the League OAuth Client Provider.
|
* An instance of the League OAuth Client Provider.
|
||||||
|
|||||||
44
plugins/PHPMailer/src/OAuthTokenProvider.php
Normal file
44
plugins/PHPMailer/src/OAuthTokenProvider.php
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PHPMailer - PHP email creation and transport class.
|
||||||
|
* PHP Version 5.5.
|
||||||
|
*
|
||||||
|
* @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
|
||||||
|
*
|
||||||
|
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
|
||||||
|
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
|
||||||
|
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
|
||||||
|
* @author Brent R. Matzelle (original founder)
|
||||||
|
* @copyright 2012 - 2020 Marcus Bointon
|
||||||
|
* @copyright 2010 - 2012 Jim Jagielski
|
||||||
|
* @copyright 2004 - 2009 Andy Prevost
|
||||||
|
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||||
|
* @note This program is distributed in the hope that it will be useful - WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace PHPMailer\PHPMailer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* OAuthTokenProvider - OAuth2 token provider interface.
|
||||||
|
* Provides base64 encoded OAuth2 auth strings for SMTP authentication.
|
||||||
|
*
|
||||||
|
* @see OAuth
|
||||||
|
* @see SMTP::authenticate()
|
||||||
|
*
|
||||||
|
* @author Peter Scopes (pdscopes)
|
||||||
|
* @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk>
|
||||||
|
*/
|
||||||
|
interface OAuthTokenProvider
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Generate a base64-encoded OAuth token ensuring that the access token has not expired.
|
||||||
|
* The string to be base 64 encoded should be in the form:
|
||||||
|
* "user=<user_email_address>\001auth=Bearer <access_token>\001\001"
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getOauth64();
|
||||||
|
}
|
||||||
@@ -350,17 +350,17 @@ class PHPMailer
|
|||||||
public $Password = '';
|
public $Password = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SMTP auth type.
|
* SMTP authentication type. Options are CRAM-MD5, LOGIN, PLAIN, XOAUTH2.
|
||||||
* Options are CRAM-MD5, LOGIN, PLAIN, XOAUTH2, attempted in that order if not specified.
|
* If not specified, the first one from that list that the server supports will be selected.
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $AuthType = '';
|
public $AuthType = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An instance of the PHPMailer OAuth class.
|
* An implementation of the PHPMailer OAuthTokenProvider interface.
|
||||||
*
|
*
|
||||||
* @var OAuth
|
* @var OAuthTokenProvider
|
||||||
*/
|
*/
|
||||||
protected $oauth;
|
protected $oauth;
|
||||||
|
|
||||||
@@ -750,7 +750,7 @@ class PHPMailer
|
|||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
const VERSION = '6.5.3';
|
const VERSION = '6.7.1';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Error severity: message only, continue processing.
|
* Error severity: message only, continue processing.
|
||||||
@@ -858,7 +858,7 @@ class PHPMailer
|
|||||||
private function mailPassthru($to, $subject, $body, $header, $params)
|
private function mailPassthru($to, $subject, $body, $header, $params)
|
||||||
{
|
{
|
||||||
//Check overloading of mail function to avoid double-encoding
|
//Check overloading of mail function to avoid double-encoding
|
||||||
if (ini_get('mbstring.func_overload') & 1) {
|
if ((int)ini_get('mbstring.func_overload') & 1) {
|
||||||
$subject = $this->secureHeader($subject);
|
$subject = $this->secureHeader($subject);
|
||||||
} else {
|
} else {
|
||||||
$subject = $this->encodeHeader($this->secureHeader($subject));
|
$subject = $this->encodeHeader($this->secureHeader($subject));
|
||||||
@@ -1066,8 +1066,8 @@ class PHPMailer
|
|||||||
* Addresses that have been added already return false, but do not throw exceptions.
|
* Addresses that have been added already return false, but do not throw exceptions.
|
||||||
*
|
*
|
||||||
* @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo'
|
* @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo'
|
||||||
* @param string $address The email address to send, resp. to reply to
|
* @param string $address The email address
|
||||||
* @param string $name
|
* @param string $name An optional username associated with the address
|
||||||
*
|
*
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*
|
*
|
||||||
@@ -1075,9 +1075,11 @@ class PHPMailer
|
|||||||
*/
|
*/
|
||||||
protected function addOrEnqueueAnAddress($kind, $address, $name)
|
protected function addOrEnqueueAnAddress($kind, $address, $name)
|
||||||
{
|
{
|
||||||
$address = trim($address);
|
$pos = false;
|
||||||
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
|
if ($address !== null) {
|
||||||
$pos = strrpos($address, '@');
|
$address = trim($address);
|
||||||
|
$pos = strrpos($address, '@');
|
||||||
|
}
|
||||||
if (false === $pos) {
|
if (false === $pos) {
|
||||||
//At-sign is missing.
|
//At-sign is missing.
|
||||||
$error_message = sprintf(
|
$error_message = sprintf(
|
||||||
@@ -1094,8 +1096,14 @@ class PHPMailer
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if ($name !== null && is_string($name)) {
|
||||||
|
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
|
||||||
|
} else {
|
||||||
|
$name = '';
|
||||||
|
}
|
||||||
$params = [$kind, $address, $name];
|
$params = [$kind, $address, $name];
|
||||||
//Enqueue addresses with IDN until we know the PHPMailer::$CharSet.
|
//Enqueue addresses with IDN until we know the PHPMailer::$CharSet.
|
||||||
|
//Domain is assumed to be whatever is after the last @ symbol in the address
|
||||||
if (static::idnSupported() && $this->has8bitChars(substr($address, ++$pos))) {
|
if (static::idnSupported() && $this->has8bitChars(substr($address, ++$pos))) {
|
||||||
if ('Reply-To' !== $kind) {
|
if ('Reply-To' !== $kind) {
|
||||||
if (!array_key_exists($address, $this->RecipientsQueue)) {
|
if (!array_key_exists($address, $this->RecipientsQueue)) {
|
||||||
@@ -1116,6 +1124,22 @@ class PHPMailer
|
|||||||
return call_user_func_array([$this, 'addAnAddress'], $params);
|
return call_user_func_array([$this, 'addAnAddress'], $params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the boundaries to use for delimiting MIME parts.
|
||||||
|
* If you override this, ensure you set all 3 boundaries to unique values.
|
||||||
|
* The default boundaries include a "=_" sequence which cannot occur in quoted-printable bodies,
|
||||||
|
* as suggested by https://www.rfc-editor.org/rfc/rfc2045#section-6.7
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setBoundaries()
|
||||||
|
{
|
||||||
|
$this->uniqueid = $this->generateId();
|
||||||
|
$this->boundary[1] = 'b1=_' . $this->uniqueid;
|
||||||
|
$this->boundary[2] = 'b2=_' . $this->uniqueid;
|
||||||
|
$this->boundary[3] = 'b3=_' . $this->uniqueid;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add an address to one of the recipient arrays or to the ReplyTo array.
|
* Add an address to one of the recipient arrays or to the ReplyTo array.
|
||||||
* Addresses that have been added already return false, but do not throw exceptions.
|
* Addresses that have been added already return false, but do not throw exceptions.
|
||||||
@@ -1185,6 +1209,7 @@ class PHPMailer
|
|||||||
*
|
*
|
||||||
* @param string $addrstr The address list string
|
* @param string $addrstr The address list string
|
||||||
* @param bool $useimap Whether to use the IMAP extension to parse the list
|
* @param bool $useimap Whether to use the IMAP extension to parse the list
|
||||||
|
* @param string $charset The charset to use when decoding the address list string.
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
@@ -1279,7 +1304,7 @@ class PHPMailer
|
|||||||
*/
|
*/
|
||||||
public function setFrom($address, $name = '', $auto = true)
|
public function setFrom($address, $name = '', $auto = true)
|
||||||
{
|
{
|
||||||
$address = trim($address);
|
$address = trim((string)$address);
|
||||||
$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, '@');
|
||||||
@@ -1546,17 +1571,17 @@ class PHPMailer
|
|||||||
|
|
||||||
//Validate From, Sender, and ConfirmReadingTo addresses
|
//Validate From, Sender, and ConfirmReadingTo addresses
|
||||||
foreach (['From', 'Sender', 'ConfirmReadingTo'] as $address_kind) {
|
foreach (['From', 'Sender', 'ConfirmReadingTo'] as $address_kind) {
|
||||||
$this->$address_kind = trim($this->$address_kind);
|
$this->{$address_kind} = trim($this->{$address_kind});
|
||||||
if (empty($this->$address_kind)) {
|
if (empty($this->{$address_kind})) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$this->$address_kind = $this->punyencodeAddress($this->$address_kind);
|
$this->{$address_kind} = $this->punyencodeAddress($this->{$address_kind});
|
||||||
if (!static::validateAddress($this->$address_kind)) {
|
if (!static::validateAddress($this->{$address_kind})) {
|
||||||
$error_message = sprintf(
|
$error_message = sprintf(
|
||||||
'%s (%s): %s',
|
'%s (%s): %s',
|
||||||
$this->lang('invalid_address'),
|
$this->lang('invalid_address'),
|
||||||
$address_kind,
|
$address_kind,
|
||||||
$this->$address_kind
|
$this->{$address_kind}
|
||||||
);
|
);
|
||||||
$this->setError($error_message);
|
$this->setError($error_message);
|
||||||
$this->edebug($error_message);
|
$this->edebug($error_message);
|
||||||
@@ -1656,17 +1681,17 @@ class PHPMailer
|
|||||||
default:
|
default:
|
||||||
$sendMethod = $this->Mailer . 'Send';
|
$sendMethod = $this->Mailer . 'Send';
|
||||||
if (method_exists($this, $sendMethod)) {
|
if (method_exists($this, $sendMethod)) {
|
||||||
return $this->$sendMethod($this->MIMEHeader, $this->MIMEBody);
|
return $this->{$sendMethod}($this->MIMEHeader, $this->MIMEBody);
|
||||||
}
|
}
|
||||||
|
|
||||||
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->Mailer === 'smtp' && $this->SMTPKeepAlive == true && $this->smtp->connected()) {
|
||||||
|
$this->smtp->reset();
|
||||||
|
}
|
||||||
if ($this->exceptions) {
|
if ($this->exceptions) {
|
||||||
throw $exc;
|
throw $exc;
|
||||||
}
|
}
|
||||||
@@ -1742,7 +1767,7 @@ class PHPMailer
|
|||||||
fwrite($mail, $header);
|
fwrite($mail, $header);
|
||||||
fwrite($mail, $body);
|
fwrite($mail, $body);
|
||||||
$result = pclose($mail);
|
$result = pclose($mail);
|
||||||
$addrinfo = static::parseAddresses($toAddr, true, $this->charSet);
|
$addrinfo = static::parseAddresses($toAddr, true, $this->CharSet);
|
||||||
$this->doCallback(
|
$this->doCallback(
|
||||||
($result === 0),
|
($result === 0),
|
||||||
[[$addrinfo['address'], $addrinfo['name']]],
|
[[$addrinfo['address'], $addrinfo['name']]],
|
||||||
@@ -1797,7 +1822,13 @@ class PHPMailer
|
|||||||
*/
|
*/
|
||||||
protected static function isShellSafe($string)
|
protected static function isShellSafe($string)
|
||||||
{
|
{
|
||||||
//Future-proof
|
//It's not possible to use shell commands safely (which includes the mail() function) without escapeshellarg,
|
||||||
|
//but some hosting providers disable it, creating a security problem that we don't want to have to deal with,
|
||||||
|
//so we don't.
|
||||||
|
if (!function_exists('escapeshellarg') || !function_exists('escapeshellcmd')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
escapeshellcmd($string) !== $string
|
escapeshellcmd($string) !== $string
|
||||||
|| !in_array(escapeshellarg($string), ["'$string'", "\"$string\""])
|
|| !in_array(escapeshellarg($string), ["'$string'", "\"$string\""])
|
||||||
@@ -1848,7 +1879,7 @@ class PHPMailer
|
|||||||
if (!static::isPermittedPath($path)) {
|
if (!static::isPermittedPath($path)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$readable = file_exists($path);
|
$readable = is_file($path);
|
||||||
//If not a UNC path (expected to start with \\), check read permission, see #2069
|
//If not a UNC path (expected to start with \\), check read permission, see #2069
|
||||||
if (strpos($path, '\\\\') !== 0) {
|
if (strpos($path, '\\\\') !== 0) {
|
||||||
$readable = $readable && is_readable($path);
|
$readable = $readable && is_readable($path);
|
||||||
@@ -1876,7 +1907,14 @@ class PHPMailer
|
|||||||
foreach ($this->to as $toaddr) {
|
foreach ($this->to as $toaddr) {
|
||||||
$toArr[] = $this->addrFormat($toaddr);
|
$toArr[] = $this->addrFormat($toaddr);
|
||||||
}
|
}
|
||||||
$to = implode(', ', $toArr);
|
$to = trim(implode(', ', $toArr));
|
||||||
|
|
||||||
|
//If there are no To-addresses (e.g. when sending only to BCC-addresses)
|
||||||
|
//the following should be added to get a correct DKIM-signature.
|
||||||
|
//Compare with $this->preSend()
|
||||||
|
if ($to === '') {
|
||||||
|
$to = 'undisclosed-recipients:;';
|
||||||
|
}
|
||||||
|
|
||||||
$params = null;
|
$params = null;
|
||||||
//This sets the SMTP envelope sender which gets turned into a return-path header by the receiver
|
//This sets the SMTP envelope sender which gets turned into a return-path header by the receiver
|
||||||
@@ -1905,7 +1943,7 @@ class PHPMailer
|
|||||||
if ($this->SingleTo && count($toArr) > 1) {
|
if ($this->SingleTo && count($toArr) > 1) {
|
||||||
foreach ($toArr as $toAddr) {
|
foreach ($toArr as $toAddr) {
|
||||||
$result = $this->mailPassthru($toAddr, $this->Subject, $body, $header, $params);
|
$result = $this->mailPassthru($toAddr, $this->Subject, $body, $header, $params);
|
||||||
$addrinfo = static::parseAddresses($toAddr, true, $this->charSet);
|
$addrinfo = static::parseAddresses($toAddr, true, $this->CharSet);
|
||||||
$this->doCallback(
|
$this->doCallback(
|
||||||
$result,
|
$result,
|
||||||
[[$addrinfo['address'], $addrinfo['name']]],
|
[[$addrinfo['address'], $addrinfo['name']]],
|
||||||
@@ -2079,6 +2117,9 @@ class PHPMailer
|
|||||||
$this->smtp->setDebugLevel($this->SMTPDebug);
|
$this->smtp->setDebugLevel($this->SMTPDebug);
|
||||||
$this->smtp->setDebugOutput($this->Debugoutput);
|
$this->smtp->setDebugOutput($this->Debugoutput);
|
||||||
$this->smtp->setVerp($this->do_verp);
|
$this->smtp->setVerp($this->do_verp);
|
||||||
|
if ($this->Host === null) {
|
||||||
|
$this->Host = 'localhost';
|
||||||
|
}
|
||||||
$hosts = explode(';', $this->Host);
|
$hosts = explode(';', $this->Host);
|
||||||
$lastexception = null;
|
$lastexception = null;
|
||||||
|
|
||||||
@@ -2154,7 +2195,8 @@ class PHPMailer
|
|||||||
}
|
}
|
||||||
if ($tls) {
|
if ($tls) {
|
||||||
if (!$this->smtp->startTLS()) {
|
if (!$this->smtp->startTLS()) {
|
||||||
throw new Exception($this->lang('connect_host'));
|
$message = $this->getSmtpErrorMessage('connect_host');
|
||||||
|
throw new Exception($message);
|
||||||
}
|
}
|
||||||
//We must resend EHLO after TLS negotiation
|
//We must resend EHLO after TLS negotiation
|
||||||
$this->smtp->hello($hello);
|
$this->smtp->hello($hello);
|
||||||
@@ -2185,6 +2227,11 @@ class PHPMailer
|
|||||||
if ($this->exceptions && null !== $lastexception) {
|
if ($this->exceptions && null !== $lastexception) {
|
||||||
throw $lastexception;
|
throw $lastexception;
|
||||||
}
|
}
|
||||||
|
if ($this->exceptions) {
|
||||||
|
// no exception was thrown, likely $this->smtp->connect() failed
|
||||||
|
$message = $this->getSmtpErrorMessage('connect_host');
|
||||||
|
throw new Exception($message);
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2630,16 +2677,15 @@ class PHPMailer
|
|||||||
$result .= $this->headerLine('X-Priority', $this->Priority);
|
$result .= $this->headerLine('X-Priority', $this->Priority);
|
||||||
}
|
}
|
||||||
if ('' === $this->XMailer) {
|
if ('' === $this->XMailer) {
|
||||||
|
//Empty string for default X-Mailer header
|
||||||
$result .= $this->headerLine(
|
$result .= $this->headerLine(
|
||||||
'X-Mailer',
|
'X-Mailer',
|
||||||
'PHPMailer ' . self::VERSION . ' (https://github.com/PHPMailer/PHPMailer)'
|
'PHPMailer ' . self::VERSION . ' (https://github.com/PHPMailer/PHPMailer)'
|
||||||
);
|
);
|
||||||
} else {
|
} elseif (is_string($this->XMailer) && trim($this->XMailer) !== '') {
|
||||||
$myXmailer = trim($this->XMailer);
|
//Some string
|
||||||
if ($myXmailer) {
|
$result .= $this->headerLine('X-Mailer', trim($this->XMailer));
|
||||||
$result .= $this->headerLine('X-Mailer', $myXmailer);
|
} //Other values result in no X-Mailer header
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('' !== $this->ConfirmReadingTo) {
|
if ('' !== $this->ConfirmReadingTo) {
|
||||||
$result .= $this->headerLine('Disposition-Notification-To', '<' . $this->ConfirmReadingTo . '>');
|
$result .= $this->headerLine('Disposition-Notification-To', '<' . $this->ConfirmReadingTo . '>');
|
||||||
@@ -2764,10 +2810,7 @@ class PHPMailer
|
|||||||
{
|
{
|
||||||
$body = '';
|
$body = '';
|
||||||
//Create unique IDs and preset boundaries
|
//Create unique IDs and preset boundaries
|
||||||
$this->uniqueid = $this->generateId();
|
$this->setBoundaries();
|
||||||
$this->boundary[1] = 'b1_' . $this->uniqueid;
|
|
||||||
$this->boundary[2] = 'b2_' . $this->uniqueid;
|
|
||||||
$this->boundary[3] = 'b3_' . $this->uniqueid;
|
|
||||||
|
|
||||||
if ($this->sign_key_file) {
|
if ($this->sign_key_file) {
|
||||||
$body .= $this->getMailMIME() . static::$LE;
|
$body .= $this->getMailMIME() . static::$LE;
|
||||||
@@ -2803,7 +2846,7 @@ class PHPMailer
|
|||||||
$altBodyEncoding = static::ENCODING_QUOTED_PRINTABLE;
|
$altBodyEncoding = static::ENCODING_QUOTED_PRINTABLE;
|
||||||
}
|
}
|
||||||
//Use this as a preamble in all multipart message types
|
//Use this as a preamble in all multipart message types
|
||||||
$mimepre = 'This is a multi-part message in MIME format.' . static::$LE . static::$LE;
|
$mimepre = '';
|
||||||
switch ($this->message_type) {
|
switch ($this->message_type) {
|
||||||
case 'inline':
|
case 'inline':
|
||||||
$body .= $mimepre;
|
$body .= $mimepre;
|
||||||
@@ -3039,6 +3082,18 @@ class PHPMailer
|
|||||||
return $body;
|
return $body;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the boundaries that this message will use
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getBoundaries()
|
||||||
|
{
|
||||||
|
if (empty($this->boundary)) {
|
||||||
|
$this->setBoundaries();
|
||||||
|
}
|
||||||
|
return $this->boundary;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the start of a message boundary.
|
* Return the start of a message boundary.
|
||||||
*
|
*
|
||||||
@@ -3694,20 +3749,21 @@ class PHPMailer
|
|||||||
* These differ from 'regular' attachments in that they are intended to be
|
* These differ from 'regular' attachments in that they are intended to be
|
||||||
* displayed inline with the message, not just attached for download.
|
* displayed inline with the message, not just attached for download.
|
||||||
* This is used in HTML messages that embed the images
|
* This is used in HTML messages that embed the images
|
||||||
* the HTML refers to using the $cid value.
|
* the HTML refers to using the `$cid` value in `img` tags, for example `<img src="cid:mylogo">`.
|
||||||
* Never use a user-supplied path to a file!
|
* Never use a user-supplied path to a file!
|
||||||
*
|
*
|
||||||
* @param string $path Path to the attachment
|
* @param string $path Path to the attachment
|
||||||
* @param string $cid Content ID of the attachment; Use this to reference
|
* @param string $cid Content ID of the attachment; Use this to reference
|
||||||
* the content when using an embedded image in HTML
|
* the content when using an embedded image in HTML
|
||||||
* @param string $name Overrides the attachment name
|
* @param string $name Overrides the attachment filename
|
||||||
* @param string $encoding File encoding (see $Encoding)
|
* @param string $encoding File encoding (see $Encoding) defaults to `base64`
|
||||||
* @param string $type File MIME type
|
* @param string $type File MIME type (by default mapped from the `$path` filename's extension)
|
||||||
* @param string $disposition Disposition to use
|
* @param string $disposition Disposition to use: `inline` (default) or `attachment`
|
||||||
*
|
* (unlikely you want this – {@see `addAttachment()`} instead)
|
||||||
* @throws Exception
|
|
||||||
*
|
*
|
||||||
* @return bool True on successfully adding an attachment
|
* @return bool True on successfully adding an attachment
|
||||||
|
* @throws Exception
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
public function addEmbeddedImage(
|
public function addEmbeddedImage(
|
||||||
$path,
|
$path,
|
||||||
@@ -4085,12 +4141,8 @@ class PHPMailer
|
|||||||
//Is it a valid IPv4 address?
|
//Is it a valid IPv4 address?
|
||||||
return filter_var($host, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false;
|
return filter_var($host, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false;
|
||||||
}
|
}
|
||||||
if (filter_var('http://' . $host, FILTER_VALIDATE_URL) !== false) {
|
//Is it a syntactically valid hostname (when embeded in a URL)?
|
||||||
//Is it a syntactically valid hostname?
|
return filter_var('http://' . $host, FILTER_VALIDATE_URL) !== false;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -4121,6 +4173,26 @@ class PHPMailer
|
|||||||
return $key;
|
return $key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build an error message starting with a generic one and adding details if possible.
|
||||||
|
*
|
||||||
|
* @param string $base_key
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
private function getSmtpErrorMessage($base_key)
|
||||||
|
{
|
||||||
|
$message = $this->lang($base_key);
|
||||||
|
$error = $this->smtp->getError();
|
||||||
|
if (!empty($error['error'])) {
|
||||||
|
$message .= ' ' . $error['error'];
|
||||||
|
if (!empty($error['detail'])) {
|
||||||
|
$message .= ' ' . $error['detail'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $message;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if an error occurred.
|
* Check if an error occurred.
|
||||||
*
|
*
|
||||||
@@ -4139,6 +4211,7 @@ class PHPMailer
|
|||||||
* @param string $name Custom header name
|
* @param string $name Custom header name
|
||||||
* @param string|null $value Header value
|
* @param string|null $value Header value
|
||||||
*
|
*
|
||||||
|
* @return bool True if a header was set successfully
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function addCustomHeader($name, $value = null)
|
public function addCustomHeader($name, $value = null)
|
||||||
@@ -4433,6 +4506,7 @@ class PHPMailer
|
|||||||
'ics' => 'text/calendar',
|
'ics' => 'text/calendar',
|
||||||
'xml' => 'text/xml',
|
'xml' => 'text/xml',
|
||||||
'xsl' => 'text/xml',
|
'xsl' => 'text/xml',
|
||||||
|
'csv' => 'text/csv',
|
||||||
'wmv' => 'video/x-ms-wmv',
|
'wmv' => 'video/x-ms-wmv',
|
||||||
'mpeg' => 'video/mpeg',
|
'mpeg' => 'video/mpeg',
|
||||||
'mpe' => 'video/mpeg',
|
'mpe' => 'video/mpeg',
|
||||||
@@ -4540,7 +4614,7 @@ class PHPMailer
|
|||||||
public function set($name, $value = '')
|
public function set($name, $value = '')
|
||||||
{
|
{
|
||||||
if (property_exists($this, $name)) {
|
if (property_exists($this, $name)) {
|
||||||
$this->$name = $value;
|
$this->{$name} = $value;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -4587,15 +4661,27 @@ class PHPMailer
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove trailing breaks from a string.
|
* Remove trailing whitespace from a string.
|
||||||
|
*
|
||||||
|
* @param string $text
|
||||||
|
*
|
||||||
|
* @return string The text to remove whitespace from
|
||||||
|
*/
|
||||||
|
public static function stripTrailingWSP($text)
|
||||||
|
{
|
||||||
|
return rtrim($text, " \r\n\t");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Strip trailing line breaks from a string.
|
||||||
*
|
*
|
||||||
* @param string $text
|
* @param string $text
|
||||||
*
|
*
|
||||||
* @return string The text to remove breaks from
|
* @return string The text to remove breaks from
|
||||||
*/
|
*/
|
||||||
public static function stripTrailingWSP($text)
|
public static function stripTrailingBreaks($text)
|
||||||
{
|
{
|
||||||
return rtrim($text, " \r\n\t");
|
return rtrim($text, "\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -4761,7 +4847,7 @@ class PHPMailer
|
|||||||
$body = static::normalizeBreaks($body, self::CRLF);
|
$body = static::normalizeBreaks($body, self::CRLF);
|
||||||
|
|
||||||
//Reduce multiple trailing line breaks to a single one
|
//Reduce multiple trailing line breaks to a single one
|
||||||
return static::stripTrailingWSP($body) . self::CRLF;
|
return static::stripTrailingBreaks($body) . self::CRLF;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -5021,9 +5107,9 @@ class PHPMailer
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the OAuth instance.
|
* Get the OAuthTokenProvider instance.
|
||||||
*
|
*
|
||||||
* @return OAuth
|
* @return OAuthTokenProvider
|
||||||
*/
|
*/
|
||||||
public function getOAuth()
|
public function getOAuth()
|
||||||
{
|
{
|
||||||
@@ -5031,9 +5117,9 @@ class PHPMailer
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set an OAuth instance.
|
* Set an OAuthTokenProvider instance.
|
||||||
*/
|
*/
|
||||||
public function setOAuth(OAuth $oauth)
|
public function setOAuth(OAuthTokenProvider $oauth)
|
||||||
{
|
{
|
||||||
$this->oauth = $oauth;
|
$this->oauth = $oauth;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ class POP3
|
|||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
const VERSION = '6.5.3';
|
const VERSION = '6.7.1';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default POP3 port number.
|
* Default POP3 port number.
|
||||||
@@ -337,7 +337,12 @@ class POP3
|
|||||||
*/
|
*/
|
||||||
public function disconnect()
|
public function disconnect()
|
||||||
{
|
{
|
||||||
$this->sendString('QUIT');
|
// If could not connect at all, no need to disconnect
|
||||||
|
if ($this->pop_conn === false) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->sendString('QUIT' . static::LE);
|
||||||
|
|
||||||
// RFC 1939 shows POP3 server sending a +OK response to the QUIT command.
|
// RFC 1939 shows POP3 server sending a +OK response to the QUIT command.
|
||||||
// Try to get it. Ignore any failures here.
|
// Try to get it. Ignore any failures here.
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ class SMTP
|
|||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
const VERSION = '6.5.3';
|
const VERSION = '6.7.1';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SMTP line break constant.
|
* SMTP line break constant.
|
||||||
@@ -187,6 +187,7 @@ class SMTP
|
|||||||
'SendGrid' => '/[\d]{3} Ok: queued as (.*)/',
|
'SendGrid' => '/[\d]{3} Ok: queued as (.*)/',
|
||||||
'CampaignMonitor' => '/[\d]{3} 2.0.0 OK:([a-zA-Z\d]{48})/',
|
'CampaignMonitor' => '/[\d]{3} 2.0.0 OK:([a-zA-Z\d]{48})/',
|
||||||
'Haraka' => '/[\d]{3} Message Queued \((.*)\)/',
|
'Haraka' => '/[\d]{3} Message Queued \((.*)\)/',
|
||||||
|
'Mailjet' => '/[\d]{3} OK queued as (.*)/',
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -482,7 +483,7 @@ class SMTP
|
|||||||
* @param string $username The user name
|
* @param string $username The user name
|
||||||
* @param string $password The password
|
* @param string $password The password
|
||||||
* @param string $authtype The auth type (CRAM-MD5, PLAIN, LOGIN, XOAUTH2)
|
* @param string $authtype The auth type (CRAM-MD5, PLAIN, LOGIN, XOAUTH2)
|
||||||
* @param OAuth $OAuth An optional OAuth instance for XOAUTH2 authentication
|
* @param OAuthTokenProvider $OAuth An optional OAuthTokenProvider instance for XOAUTH2 authentication
|
||||||
*
|
*
|
||||||
* @return bool True if successfully authenticated
|
* @return bool True if successfully authenticated
|
||||||
*/
|
*/
|
||||||
@@ -681,7 +682,6 @@ class SMTP
|
|||||||
*/
|
*/
|
||||||
public function close()
|
public function close()
|
||||||
{
|
{
|
||||||
$this->setError('');
|
|
||||||
$this->server_caps = null;
|
$this->server_caps = null;
|
||||||
$this->helo_rply = null;
|
$this->helo_rply = null;
|
||||||
if (is_resource($this->smtp_conn)) {
|
if (is_resource($this->smtp_conn)) {
|
||||||
@@ -1036,7 +1036,10 @@ class SMTP
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->setError('');
|
//Don't clear the error store when using keepalive
|
||||||
|
if ($command !== 'RSET') {
|
||||||
|
$this->setError('');
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user