Version Description
- 2019-07-11 =
- Improved: minor changes and fixes.
Download this release
Release Info
Developer | wysija |
Plugin | MailPoet Newsletters (New) |
Version | 3.32.1 |
Comparing to | |
See all releases |
Code changes from version 3.32.0 to 3.32.1
- lang/mailpoet-ar.mo +0 -0
- lang/mailpoet-ca.mo +0 -0
- lang/mailpoet-cs_CZ.mo +0 -0
- lang/mailpoet-da_DK.mo +0 -0
- lang/mailpoet-de_DE.mo +0 -0
- lang/mailpoet-el.mo +0 -0
- lang/mailpoet-es_ES.mo +0 -0
- lang/mailpoet-es_MX.mo +0 -0
- lang/mailpoet-fr_CA.mo +0 -0
- lang/mailpoet-fr_FR.mo +0 -0
- lang/mailpoet-hu_HU.mo +0 -0
- lang/mailpoet-it_IT.mo +0 -0
- lang/mailpoet-ja.mo +0 -0
- lang/mailpoet-nb_NO.mo +0 -0
- lang/mailpoet-nl_NL.mo +0 -0
- lang/mailpoet-pt_BR.mo +0 -0
- lang/mailpoet-pt_PT.mo +0 -0
- lang/mailpoet-ro_RO.mo +0 -0
- lang/mailpoet-ru_RU.mo +0 -0
- lang/mailpoet-sq.mo +0 -0
- lang/mailpoet-sr_RS.mo +0 -0
- lang/mailpoet-sv_SE.mo +0 -0
- lang/mailpoet-tr_TR.mo +0 -0
- lang/mailpoet-zh_CN.mo +0 -0
- lang/mailpoet.pot +19 -18
- lib/Mailer/Methods/AmazonSES.php +6 -0
- lib/Mailer/Methods/BlacklistTrait.php +29 -0
- lib/Mailer/Methods/ErrorMappers/AmazonSESMapper.php +3 -0
- lib/Mailer/Methods/ErrorMappers/BlacklistErrorMapperTrait.php +14 -0
- lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php +4 -0
- lib/Mailer/Methods/ErrorMappers/PHPMailMapper.php +3 -0
- lib/Mailer/Methods/ErrorMappers/SMTPMapper.php +3 -0
- lib/Mailer/Methods/ErrorMappers/SendGridMapper.php +3 -0
- lib/Mailer/Methods/MailPoet.php +10 -0
- lib/Mailer/Methods/PHPMail.php +6 -0
- lib/Mailer/Methods/SMTP.php +6 -0
- lib/Mailer/Methods/SendGrid.php +6 -0
- lib/Subscription/Blacklist.php +25 -0
- mailpoet.php +2 -2
- readme.txt +4 -1
- vendor-prefixed/autoload.php +1 -1
- vendor/autoload.php +1 -1
- vendor/composer/autoload_real.php +7 -7
- vendor/composer/autoload_static.php +5 -5
lang/mailpoet-ar.mo
CHANGED
Binary file
|
lang/mailpoet-ca.mo
CHANGED
Binary file
|
lang/mailpoet-cs_CZ.mo
CHANGED
Binary file
|
lang/mailpoet-da_DK.mo
CHANGED
Binary file
|
lang/mailpoet-de_DE.mo
CHANGED
Binary file
|
lang/mailpoet-el.mo
CHANGED
Binary file
|
lang/mailpoet-es_ES.mo
CHANGED
Binary file
|
lang/mailpoet-es_MX.mo
CHANGED
Binary file
|
lang/mailpoet-fr_CA.mo
CHANGED
Binary file
|
lang/mailpoet-fr_FR.mo
CHANGED
Binary file
|
lang/mailpoet-hu_HU.mo
CHANGED
Binary file
|
lang/mailpoet-it_IT.mo
CHANGED
Binary file
|
lang/mailpoet-ja.mo
CHANGED
Binary file
|
lang/mailpoet-nb_NO.mo
CHANGED
Binary file
|
lang/mailpoet-nl_NL.mo
CHANGED
Binary file
|
lang/mailpoet-pt_BR.mo
CHANGED
Binary file
|
lang/mailpoet-pt_PT.mo
CHANGED
Binary file
|
lang/mailpoet-ro_RO.mo
CHANGED
Binary file
|
lang/mailpoet-ru_RU.mo
CHANGED
Binary file
|
lang/mailpoet-sq.mo
CHANGED
Binary file
|
lang/mailpoet-sr_RS.mo
CHANGED
Binary file
|
lang/mailpoet-sv_SE.mo
CHANGED
Binary file
|
lang/mailpoet-tr_TR.mo
CHANGED
Binary file
|
lang/mailpoet-zh_CN.mo
CHANGED
Binary file
|
lang/mailpoet.pot
CHANGED
@@ -4,7 +4,7 @@ msgid ""
|
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: \n"
|
6 |
"Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
|
7 |
-
"POT-Creation-Date: 2019-07-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -1606,72 +1606,73 @@ msgstr ""
|
|
1606 |
msgid "Sending frequency limit has been reached."
|
1607 |
msgstr ""
|
1608 |
|
1609 |
-
#: lib/Mailer/Methods/AmazonSES.php:
|
1610 |
msgid "Unsupported Amazon SES region"
|
1611 |
msgstr ""
|
1612 |
|
1613 |
-
#: lib/Mailer/Methods/ErrorMappers/AmazonSESMapper.php:
|
1614 |
-
#: lib/Mailer/Methods/ErrorMappers/
|
1615 |
-
#: lib/Mailer/Methods/ErrorMappers/
|
1616 |
-
#: lib/Mailer/Methods/ErrorMappers/
|
|
|
1617 |
msgid "%s has returned an unknown error."
|
1618 |
msgstr ""
|
1619 |
|
1620 |
-
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:
|
1621 |
msgid "MailPoet API key is invalid!"
|
1622 |
msgstr ""
|
1623 |
|
1624 |
-
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:
|
1625 |
msgid "JSON input is not an array"
|
1626 |
msgstr ""
|
1627 |
|
1628 |
-
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:
|
1629 |
msgid "Error while sending."
|
1630 |
msgstr ""
|
1631 |
|
1632 |
-
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:
|
1633 |
msgid ""
|
1634 |
"Email service is temporarily not available, please try again in a few "
|
1635 |
"minutes."
|
1636 |
msgstr ""
|
1637 |
|
1638 |
-
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:
|
1639 |
msgid "Invalid MSS response format."
|
1640 |
msgstr ""
|
1641 |
|
1642 |
-
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:
|
1643 |
msgid ""
|
1644 |
"The MailPoet Sending Service did not send your latest email because the "
|
1645 |
"address <i>%s</i> is not yet authorized."
|
1646 |
msgstr ""
|
1647 |
|
1648 |
-
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:
|
1649 |
msgid "Unknown address"
|
1650 |
msgstr ""
|
1651 |
|
1652 |
-
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:
|
1653 |
msgid "[link]Authorize your email in your account now.[/link]"
|
1654 |
msgstr ""
|
1655 |
|
1656 |
-
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:
|
1657 |
#: lib/Util/Notices/UnauthorizedEmailInNewslettersNotice.php:82
|
1658 |
#: lib/Util/Notices/UnauthorizedEmailNotice.php:103 views/newsletters.html:303
|
1659 |
msgid "Resume sending"
|
1660 |
msgstr ""
|
1661 |
|
1662 |
-
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:
|
1663 |
msgid ""
|
1664 |
"The MailPoet Sending Service has stopped sending your emails for one of the "
|
1665 |
"following reasons:"
|
1666 |
msgstr ""
|
1667 |
|
1668 |
-
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:
|
1669 |
msgid ""
|
1670 |
"You may have reached the subscriber limit of your plan. [link]Manage your "
|
1671 |
"subscriptions[/link]."
|
1672 |
msgstr ""
|
1673 |
|
1674 |
-
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:
|
1675 |
msgid ""
|
1676 |
"You may have had a poor deliverability rate. Please [link]contact our "
|
1677 |
"support team[/link] to resolve the issue."
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: \n"
|
6 |
"Report-Msgid-Bugs-To: http://support.mailpoet.com/\n"
|
7 |
+
"POT-Creation-Date: 2019-07-11 11:40:17+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=utf-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
1606 |
msgid "Sending frequency limit has been reached."
|
1607 |
msgstr ""
|
1608 |
|
1609 |
+
#: lib/Mailer/Methods/AmazonSES.php:52
|
1610 |
msgid "Unsupported Amazon SES region"
|
1611 |
msgstr ""
|
1612 |
|
1613 |
+
#: lib/Mailer/Methods/ErrorMappers/AmazonSESMapper.php:31
|
1614 |
+
#: lib/Mailer/Methods/ErrorMappers/BlacklistErrorMapperTrait.php:10
|
1615 |
+
#: lib/Mailer/Methods/ErrorMappers/PHPMailMapper.php:26
|
1616 |
+
#: lib/Mailer/Methods/ErrorMappers/SMTPMapper.php:39
|
1617 |
+
#: lib/Mailer/Methods/ErrorMappers/SendGridMapper.php:18
|
1618 |
msgid "%s has returned an unknown error."
|
1619 |
msgstr ""
|
1620 |
|
1621 |
+
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:29
|
1622 |
msgid "MailPoet API key is invalid!"
|
1623 |
msgstr ""
|
1624 |
|
1625 |
+
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:42
|
1626 |
msgid "JSON input is not an array"
|
1627 |
msgstr ""
|
1628 |
|
1629 |
+
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:46
|
1630 |
msgid "Error while sending."
|
1631 |
msgstr ""
|
1632 |
|
1633 |
+
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:59
|
1634 |
msgid ""
|
1635 |
"Email service is temporarily not available, please try again in a few "
|
1636 |
"minutes."
|
1637 |
msgstr ""
|
1638 |
|
1639 |
+
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:82
|
1640 |
msgid "Invalid MSS response format."
|
1641 |
msgstr ""
|
1642 |
|
1643 |
+
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:99
|
1644 |
msgid ""
|
1645 |
"The MailPoet Sending Service did not send your latest email because the "
|
1646 |
"address <i>%s</i> is not yet authorized."
|
1647 |
msgstr ""
|
1648 |
|
1649 |
+
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:99
|
1650 |
msgid "Unknown address"
|
1651 |
msgstr ""
|
1652 |
|
1653 |
+
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:102
|
1654 |
msgid "[link]Authorize your email in your account now.[/link]"
|
1655 |
msgstr ""
|
1656 |
|
1657 |
+
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:110
|
1658 |
#: lib/Util/Notices/UnauthorizedEmailInNewslettersNotice.php:82
|
1659 |
#: lib/Util/Notices/UnauthorizedEmailNotice.php:103 views/newsletters.html:303
|
1660 |
msgid "Resume sending"
|
1661 |
msgstr ""
|
1662 |
|
1663 |
+
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:116
|
1664 |
msgid ""
|
1665 |
"The MailPoet Sending Service has stopped sending your emails for one of the "
|
1666 |
"following reasons:"
|
1667 |
msgstr ""
|
1668 |
|
1669 |
+
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:119
|
1670 |
msgid ""
|
1671 |
"You may have reached the subscriber limit of your plan. [link]Manage your "
|
1672 |
"subscriptions[/link]."
|
1673 |
msgstr ""
|
1674 |
|
1675 |
+
#: lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php:128
|
1676 |
msgid ""
|
1677 |
"You may have had a poor deliverability rate. Please [link]contact our "
|
1678 |
"support team[/link] to resolve the issue."
|
lib/Mailer/Methods/AmazonSES.php
CHANGED
@@ -8,6 +8,8 @@ use MailPoet\WP\Functions as WPFunctions;
|
|
8 |
if (!defined('ABSPATH')) exit;
|
9 |
|
10 |
class AmazonSES {
|
|
|
|
|
11 |
public $aws_access_key;
|
12 |
public $aws_secret_key;
|
13 |
public $aws_region;
|
@@ -67,6 +69,10 @@ class AmazonSES {
|
|
67 |
}
|
68 |
|
69 |
function send($newsletter, $subscriber, $extra_params = []) {
|
|
|
|
|
|
|
|
|
70 |
try {
|
71 |
$result = $this->wp->wpRemotePost(
|
72 |
$this->url,
|
8 |
if (!defined('ABSPATH')) exit;
|
9 |
|
10 |
class AmazonSES {
|
11 |
+
use BlacklistTrait;
|
12 |
+
|
13 |
public $aws_access_key;
|
14 |
public $aws_secret_key;
|
15 |
public $aws_region;
|
69 |
}
|
70 |
|
71 |
function send($newsletter, $subscriber, $extra_params = []) {
|
72 |
+
if ($this->isBlacklisted($subscriber)) {
|
73 |
+
$error = $this->error_mapper->getBlacklistError($subscriber);
|
74 |
+
return Mailer::formatMailerErrorResult($error);
|
75 |
+
}
|
76 |
try {
|
77 |
$result = $this->wp->wpRemotePost(
|
78 |
$this->url,
|
lib/Mailer/Methods/BlacklistTrait.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace MailPoet\Mailer\Methods;
|
3 |
+
|
4 |
+
use MailPoet\Subscription\Blacklist;
|
5 |
+
|
6 |
+
trait BlacklistTrait {
|
7 |
+
/** @var Blacklist */
|
8 |
+
private $blacklist;
|
9 |
+
|
10 |
+
function isBlacklisted($subscriber) {
|
11 |
+
$email = $this->getSubscriberEmailForBlacklistCheck($subscriber);
|
12 |
+
return $this->getBlacklist()->isBlacklisted($email);
|
13 |
+
}
|
14 |
+
|
15 |
+
private function getSubscriberEmailForBlacklistCheck($subscriber_string) {
|
16 |
+
preg_match('!(?P<name>.*?)\s<(?P<email>.*?)>!', $subscriber_string, $subscriber_data);
|
17 |
+
if (!isset($subscriber_data['email'])) {
|
18 |
+
return $subscriber_string;
|
19 |
+
}
|
20 |
+
return $subscriber_data['email'];
|
21 |
+
}
|
22 |
+
|
23 |
+
private function getBlacklist() {
|
24 |
+
if (!$this->blacklist instanceof Blacklist) {
|
25 |
+
$this->blacklist = new Blacklist();
|
26 |
+
}
|
27 |
+
return $this->blacklist;
|
28 |
+
}
|
29 |
+
}
|
lib/Mailer/Methods/ErrorMappers/AmazonSESMapper.php
CHANGED
@@ -7,8 +7,11 @@ use MailPoet\Mailer\SubscriberError;
|
|
7 |
use MailPoet\WP\Functions as WPFunctions;
|
8 |
|
9 |
class AmazonSESMapper {
|
|
|
10 |
use ConnectionErrorMapperTrait;
|
11 |
|
|
|
|
|
12 |
function getErrorFromException(\Exception $e, $subscriber) {
|
13 |
$level = MailerError::LEVEL_HARD;
|
14 |
if ($e instanceof \Swift_RfcComplianceException) {
|
7 |
use MailPoet\WP\Functions as WPFunctions;
|
8 |
|
9 |
class AmazonSESMapper {
|
10 |
+
use BlacklistErrorMapperTrait;
|
11 |
use ConnectionErrorMapperTrait;
|
12 |
|
13 |
+
const METHOD = Mailer::METHOD_AMAZONSES;
|
14 |
+
|
15 |
function getErrorFromException(\Exception $e, $subscriber) {
|
16 |
$level = MailerError::LEVEL_HARD;
|
17 |
if ($e instanceof \Swift_RfcComplianceException) {
|
lib/Mailer/Methods/ErrorMappers/BlacklistErrorMapperTrait.php
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace MailPoet\Mailer\Methods\ErrorMappers;
|
3 |
+
|
4 |
+
use MailPoet\Mailer\MailerError;
|
5 |
+
use MailPoet\Mailer\SubscriberError;
|
6 |
+
use MailPoet\WP\Functions as WPFunctions;
|
7 |
+
|
8 |
+
trait BlacklistErrorMapperTrait {
|
9 |
+
function getBlacklistError($subscriber) {
|
10 |
+
$message = sprintf(WPFunctions::get()->__('%s has returned an unknown error.', 'mailpoet'), self::METHOD);
|
11 |
+
$subscriber_errors = [new SubscriberError($subscriber, null)];
|
12 |
+
return new MailerError(MailerError::OPERATION_SEND, MailerError::LEVEL_SOFT, $message, null, $subscriber_errors);
|
13 |
+
}
|
14 |
+
}
|
lib/Mailer/Methods/ErrorMappers/MailPoetMapper.php
CHANGED
@@ -2,6 +2,7 @@
|
|
2 |
namespace MailPoet\Mailer\Methods\ErrorMappers;
|
3 |
|
4 |
use MailPoet\Mailer\MailerError;
|
|
|
5 |
use MailPoet\Mailer\SubscriberError;
|
6 |
use MailPoet\Services\Bridge\API;
|
7 |
use InvalidArgumentException;
|
@@ -14,8 +15,11 @@ if (!defined('ABSPATH')) exit;
|
|
14 |
|
15 |
|
16 |
class MailPoetMapper {
|
|
|
17 |
use ConnectionErrorMapperTrait;
|
18 |
|
|
|
|
|
19 |
const TEMPORARY_UNAVAILABLE_RETRY_INTERVAL = 300; // seconds
|
20 |
|
21 |
function getInvalidApiKeyError() {
|
2 |
namespace MailPoet\Mailer\Methods\ErrorMappers;
|
3 |
|
4 |
use MailPoet\Mailer\MailerError;
|
5 |
+
use MailPoet\Mailer\Mailer;
|
6 |
use MailPoet\Mailer\SubscriberError;
|
7 |
use MailPoet\Services\Bridge\API;
|
8 |
use InvalidArgumentException;
|
15 |
|
16 |
|
17 |
class MailPoetMapper {
|
18 |
+
use BlacklistErrorMapperTrait;
|
19 |
use ConnectionErrorMapperTrait;
|
20 |
|
21 |
+
const METHOD = Mailer::METHOD_MAILPOET;
|
22 |
+
|
23 |
const TEMPORARY_UNAVAILABLE_RETRY_INTERVAL = 300; // seconds
|
24 |
|
25 |
function getInvalidApiKeyError() {
|
lib/Mailer/Methods/ErrorMappers/PHPMailMapper.php
CHANGED
@@ -7,8 +7,11 @@ use MailPoet\Mailer\SubscriberError;
|
|
7 |
use MailPoet\WP\Functions as WPFunctions;
|
8 |
|
9 |
class PHPMailMapper {
|
|
|
10 |
use ConnectionErrorMapperTrait;
|
11 |
|
|
|
|
|
12 |
function getErrorFromException(\Exception $e, $subscriber) {
|
13 |
$level = MailerError::LEVEL_HARD;
|
14 |
if (strpos($e->getMessage(), 'Invalid address') === 0) {
|
7 |
use MailPoet\WP\Functions as WPFunctions;
|
8 |
|
9 |
class PHPMailMapper {
|
10 |
+
use BlacklistErrorMapperTrait;
|
11 |
use ConnectionErrorMapperTrait;
|
12 |
|
13 |
+
const METHOD = Mailer::METHOD_PHPMAIL;
|
14 |
+
|
15 |
function getErrorFromException(\Exception $e, $subscriber) {
|
16 |
$level = MailerError::LEVEL_HARD;
|
17 |
if (strpos($e->getMessage(), 'Invalid address') === 0) {
|
lib/Mailer/Methods/ErrorMappers/SMTPMapper.php
CHANGED
@@ -7,8 +7,11 @@ use MailPoet\Mailer\SubscriberError;
|
|
7 |
use MailPoet\WP\Functions as WPFunctions;
|
8 |
|
9 |
class SMTPMapper {
|
|
|
10 |
use ConnectionErrorMapperTrait;
|
11 |
|
|
|
|
|
12 |
/**
|
13 |
* @see https://swiftmailer.symfony.com/docs/sending.html
|
14 |
* @return MailerError
|
7 |
use MailPoet\WP\Functions as WPFunctions;
|
8 |
|
9 |
class SMTPMapper {
|
10 |
+
use BlacklistErrorMapperTrait;
|
11 |
use ConnectionErrorMapperTrait;
|
12 |
|
13 |
+
const METHOD = Mailer::METHOD_SMTP;
|
14 |
+
|
15 |
/**
|
16 |
* @see https://swiftmailer.symfony.com/docs/sending.html
|
17 |
* @return MailerError
|
lib/Mailer/Methods/ErrorMappers/SendGridMapper.php
CHANGED
@@ -7,8 +7,11 @@ use MailPoet\Mailer\SubscriberError;
|
|
7 |
use MailPoet\WP\Functions as WPFunctions;
|
8 |
|
9 |
class SendGridMapper {
|
|
|
10 |
use ConnectionErrorMapperTrait;
|
11 |
|
|
|
|
|
12 |
function getErrorFromResponse($response, $subscriber) {
|
13 |
$response = (!empty($response['errors'][0])) ?
|
14 |
$response['errors'][0] :
|
7 |
use MailPoet\WP\Functions as WPFunctions;
|
8 |
|
9 |
class SendGridMapper {
|
10 |
+
use BlacklistErrorMapperTrait;
|
11 |
use ConnectionErrorMapperTrait;
|
12 |
|
13 |
+
const METHOD = Mailer::METHOD_SENDGRID;
|
14 |
+
|
15 |
function getErrorFromResponse($response, $subscriber) {
|
16 |
$response = (!empty($response['errors'][0])) ?
|
17 |
$response['errors'][0] :
|
lib/Mailer/Methods/MailPoet.php
CHANGED
@@ -12,6 +12,8 @@ use MailPoet\Services\Bridge\API;
|
|
12 |
if (!defined('ABSPATH')) exit;
|
13 |
|
14 |
class MailPoet {
|
|
|
|
|
15 |
public $api;
|
16 |
public $sender;
|
17 |
public $reply_to;
|
@@ -37,6 +39,14 @@ class MailPoet {
|
|
37 |
return Mailer::formatMailerErrorResult($this->error_mapper->getInvalidApiKeyError());
|
38 |
}
|
39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
$message_body = $this->getBody($newsletter, $subscriber, $extra_params);
|
41 |
$result = $this->api->sendMessages($message_body);
|
42 |
|
12 |
if (!defined('ABSPATH')) exit;
|
13 |
|
14 |
class MailPoet {
|
15 |
+
use BlacklistTrait;
|
16 |
+
|
17 |
public $api;
|
18 |
public $sender;
|
19 |
public $reply_to;
|
39 |
return Mailer::formatMailerErrorResult($this->error_mapper->getInvalidApiKeyError());
|
40 |
}
|
41 |
|
42 |
+
$subscribers_for_blacklist_check = is_array($subscriber) ? $subscriber : [$subscriber];
|
43 |
+
foreach ($subscribers_for_blacklist_check as $sub) {
|
44 |
+
if ($this->isBlacklisted($sub)) {
|
45 |
+
$error = $this->error_mapper->getBlacklistError($sub);
|
46 |
+
return Mailer::formatMailerErrorResult($error);
|
47 |
+
}
|
48 |
+
}
|
49 |
+
|
50 |
$message_body = $this->getBody($newsletter, $subscriber, $extra_params);
|
51 |
$result = $this->api->sendMessages($message_body);
|
52 |
|
lib/Mailer/Methods/PHPMail.php
CHANGED
@@ -10,6 +10,8 @@ if (!defined('ABSPATH')) exit;
|
|
10 |
require_once ABSPATH . WPINC . '/class-phpmailer.php';
|
11 |
|
12 |
class PHPMail {
|
|
|
|
|
13 |
public $sender;
|
14 |
public $reply_to;
|
15 |
public $return_path;
|
@@ -29,6 +31,10 @@ class PHPMail {
|
|
29 |
}
|
30 |
|
31 |
function send($newsletter, $subscriber, $extra_params = []) {
|
|
|
|
|
|
|
|
|
32 |
try {
|
33 |
$mailer = $this->configureMailerWithMessage($newsletter, $subscriber, $extra_params);
|
34 |
$result = $mailer->send();
|
10 |
require_once ABSPATH . WPINC . '/class-phpmailer.php';
|
11 |
|
12 |
class PHPMail {
|
13 |
+
use BlacklistTrait;
|
14 |
+
|
15 |
public $sender;
|
16 |
public $reply_to;
|
17 |
public $return_path;
|
31 |
}
|
32 |
|
33 |
function send($newsletter, $subscriber, $extra_params = []) {
|
34 |
+
if ($this->isBlacklisted($subscriber)) {
|
35 |
+
$error = $this->error_mapper->getBlacklistError($subscriber);
|
36 |
+
return Mailer::formatMailerErrorResult($error);
|
37 |
+
}
|
38 |
try {
|
39 |
$mailer = $this->configureMailerWithMessage($newsletter, $subscriber, $extra_params);
|
40 |
$result = $mailer->send();
|
lib/Mailer/Methods/SMTP.php
CHANGED
@@ -8,6 +8,8 @@ use MailPoet\WP\Functions as WPFunctions;
|
|
8 |
if (!defined('ABSPATH')) exit;
|
9 |
|
10 |
class SMTP {
|
|
|
|
|
11 |
public $host;
|
12 |
public $port;
|
13 |
public $authentication;
|
@@ -48,6 +50,10 @@ class SMTP {
|
|
48 |
}
|
49 |
|
50 |
function send($newsletter, $subscriber, $extra_params = []) {
|
|
|
|
|
|
|
|
|
51 |
try {
|
52 |
$message = $this->createMessage($newsletter, $subscriber, $extra_params);
|
53 |
$result = $this->mailer->send($message);
|
8 |
if (!defined('ABSPATH')) exit;
|
9 |
|
10 |
class SMTP {
|
11 |
+
use BlacklistTrait;
|
12 |
+
|
13 |
public $host;
|
14 |
public $port;
|
15 |
public $authentication;
|
50 |
}
|
51 |
|
52 |
function send($newsletter, $subscriber, $extra_params = []) {
|
53 |
+
if ($this->isBlacklisted($subscriber)) {
|
54 |
+
$error = $this->error_mapper->getBlacklistError($subscriber);
|
55 |
+
return Mailer::formatMailerErrorResult($error);
|
56 |
+
}
|
57 |
try {
|
58 |
$message = $this->createMessage($newsletter, $subscriber, $extra_params);
|
59 |
$result = $this->mailer->send($message);
|
lib/Mailer/Methods/SendGrid.php
CHANGED
@@ -9,6 +9,8 @@ use MailPoet\WP\Functions as WPFunctions;
|
|
9 |
if (!defined('ABSPATH')) exit;
|
10 |
|
11 |
class SendGrid {
|
|
|
|
|
12 |
public $url = 'https://api.sendgrid.com/api/mail.send.json';
|
13 |
public $api_key;
|
14 |
public $sender;
|
@@ -28,6 +30,10 @@ class SendGrid {
|
|
28 |
}
|
29 |
|
30 |
function send($newsletter, $subscriber, $extra_params = []) {
|
|
|
|
|
|
|
|
|
31 |
$result = $this->wp->wpRemotePost(
|
32 |
$this->url,
|
33 |
$this->request($newsletter, $subscriber, $extra_params)
|
9 |
if (!defined('ABSPATH')) exit;
|
10 |
|
11 |
class SendGrid {
|
12 |
+
use BlacklistTrait;
|
13 |
+
|
14 |
public $url = 'https://api.sendgrid.com/api/mail.send.json';
|
15 |
public $api_key;
|
16 |
public $sender;
|
30 |
}
|
31 |
|
32 |
function send($newsletter, $subscriber, $extra_params = []) {
|
33 |
+
if ($this->isBlacklisted($subscriber)) {
|
34 |
+
$error = $this->error_mapper->getBlacklistError($subscriber);
|
35 |
+
return Mailer::formatMailerErrorResult($error);
|
36 |
+
}
|
37 |
$result = $this->wp->wpRemotePost(
|
38 |
$this->url,
|
39 |
$this->request($newsletter, $subscriber, $extra_params)
|
lib/Subscription/Blacklist.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace MailPoet\Subscription;
|
3 |
+
|
4 |
+
class Blacklist {
|
5 |
+
const SALT = 'mailpoet';
|
6 |
+
|
7 |
+
private $blacklist = [
|
8 |
+
'e60c6e0e73997c92d4ceac78a6b6cbbe6249244c4106a3c31de421fc50370ecd' => 1,
|
9 |
+
];
|
10 |
+
|
11 |
+
public function __construct(array $blacklist = null) {
|
12 |
+
if ($blacklist) {
|
13 |
+
$this->blacklist = array_fill_keys(array_map([$this, 'hash'], $blacklist), 1);
|
14 |
+
}
|
15 |
+
}
|
16 |
+
|
17 |
+
public function isBlacklisted($email) {
|
18 |
+
$hashed_email = $this->hash($email);
|
19 |
+
return isset($this->blacklist[$hashed_email]);
|
20 |
+
}
|
21 |
+
|
22 |
+
private function hash($email) {
|
23 |
+
return hash('sha256', $email . self::SALT);
|
24 |
+
}
|
25 |
+
}
|
mailpoet.php
CHANGED
@@ -4,7 +4,7 @@ if (!defined('ABSPATH')) exit;
|
|
4 |
|
5 |
/*
|
6 |
* Plugin Name: MailPoet 3 (New)
|
7 |
-
* Version: 3.32.
|
8 |
* Plugin URI: http://www.mailpoet.com
|
9 |
* Description: Create and send newsletters, post notifications and welcome emails from your WordPress.
|
10 |
* Author: MailPoet
|
@@ -18,7 +18,7 @@ if (!defined('ABSPATH')) exit;
|
|
18 |
*/
|
19 |
|
20 |
$mailpoet_plugin = array(
|
21 |
-
'version' => '3.32.
|
22 |
'filename' => __FILE__,
|
23 |
'path' => dirname(__FILE__),
|
24 |
'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
|
4 |
|
5 |
/*
|
6 |
* Plugin Name: MailPoet 3 (New)
|
7 |
+
* Version: 3.32.1
|
8 |
* Plugin URI: http://www.mailpoet.com
|
9 |
* Description: Create and send newsletters, post notifications and welcome emails from your WordPress.
|
10 |
* Author: MailPoet
|
18 |
*/
|
19 |
|
20 |
$mailpoet_plugin = array(
|
21 |
+
'version' => '3.32.1',
|
22 |
'filename' => __FILE__,
|
23 |
'path' => dirname(__FILE__),
|
24 |
'autoloader' => dirname(__FILE__) . '/vendor/autoload.php',
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: mailpoet, wysija
|
|
3 |
Tags: email marketing, newsletter, newsletter subscribers, email, welcome email, post notification, WooCommerce emails, newsletter builder
|
4 |
Requires at least: 4.7
|
5 |
Tested up to: 5.2
|
6 |
-
Stable tag: 3.32.
|
7 |
License: GPLv3
|
8 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
@@ -147,6 +147,9 @@ Stop by our [support site](https://www.mailpoet.com/support).
|
|
147 |
|
148 |
== Changelog ==
|
149 |
|
|
|
|
|
|
|
150 |
= 3.32.0 - 2019-07-09 =
|
151 |
* Improved: messages for undo/redo actions.
|
152 |
|
3 |
Tags: email marketing, newsletter, newsletter subscribers, email, welcome email, post notification, WooCommerce emails, newsletter builder
|
4 |
Requires at least: 4.7
|
5 |
Tested up to: 5.2
|
6 |
+
Stable tag: 3.32.1
|
7 |
License: GPLv3
|
8 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
147 |
|
148 |
== Changelog ==
|
149 |
|
150 |
+
= 3.32.1 - 2019-07-11 =
|
151 |
+
* Improved: minor changes and fixes.
|
152 |
+
|
153 |
= 3.32.0 - 2019-07-09 =
|
154 |
* Improved: messages for undo/redo actions.
|
155 |
|
vendor-prefixed/autoload.php
CHANGED
@@ -4,4 +4,4 @@ namespace MailPoetVendor;
|
|
4 |
|
5 |
// autoload.php @generated by Composer
|
6 |
require_once __DIR__ . '/composer/autoload_real.php';
|
7 |
-
return \MailPoetVendor\
|
4 |
|
5 |
// autoload.php @generated by Composer
|
6 |
require_once __DIR__ . '/composer/autoload_real.php';
|
7 |
+
return \MailPoetVendor\ComposerAutoloaderInit3db79f94c290e86c4a358c5912978c10::getLoader();
|
vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInitd1401a4e3eb1edea29d1ca13ff970362::getLoader();
|
vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit8bbe288470863440aa073f69e900c5c7
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
require_once __DIR__ . '/autoload_static.php';
|
29 |
|
30 |
-
call_user_func(\Composer\Autoload\
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
@@ -48,19 +48,19 @@ class ComposerAutoloaderInit8bbe288470863440aa073f69e900c5c7
|
|
48 |
$loader->register(true);
|
49 |
|
50 |
if ($useStaticLoader) {
|
51 |
-
$includeFiles = Composer\Autoload\
|
52 |
} else {
|
53 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
54 |
}
|
55 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
56 |
-
|
57 |
}
|
58 |
|
59 |
return $loader;
|
60 |
}
|
61 |
}
|
62 |
|
63 |
-
function
|
64 |
{
|
65 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
66 |
require $file;
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInitd1401a4e3eb1edea29d1ca13ff970362
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInitd1401a4e3eb1edea29d1ca13ff970362', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInitd1401a4e3eb1edea29d1ca13ff970362', 'loadClassLoader'));
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
require_once __DIR__ . '/autoload_static.php';
|
29 |
|
30 |
+
call_user_func(\Composer\Autoload\ComposerStaticInitd1401a4e3eb1edea29d1ca13ff970362::getInitializer($loader));
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
48 |
$loader->register(true);
|
49 |
|
50 |
if ($useStaticLoader) {
|
51 |
+
$includeFiles = Composer\Autoload\ComposerStaticInitd1401a4e3eb1edea29d1ca13ff970362::$files;
|
52 |
} else {
|
53 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
54 |
}
|
55 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
56 |
+
composerRequired1401a4e3eb1edea29d1ca13ff970362($fileIdentifier, $file);
|
57 |
}
|
58 |
|
59 |
return $loader;
|
60 |
}
|
61 |
}
|
62 |
|
63 |
+
function composerRequired1401a4e3eb1edea29d1ca13ff970362($fileIdentifier, $file)
|
64 |
{
|
65 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
66 |
require $file;
|
vendor/composer/autoload_static.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
@@ -793,10 +793,10 @@ class ComposerStaticInit8bbe288470863440aa073f69e900c5c7
|
|
793 |
public static function getInitializer(ClassLoader $loader)
|
794 |
{
|
795 |
return \Closure::bind(function () use ($loader) {
|
796 |
-
$loader->prefixLengthsPsr4 =
|
797 |
-
$loader->prefixDirsPsr4 =
|
798 |
-
$loader->fallbackDirsPsr4 =
|
799 |
-
$loader->classMap =
|
800 |
|
801 |
}, null, ClassLoader::class);
|
802 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInitd1401a4e3eb1edea29d1ca13ff970362
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
793 |
public static function getInitializer(ClassLoader $loader)
|
794 |
{
|
795 |
return \Closure::bind(function () use ($loader) {
|
796 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInitd1401a4e3eb1edea29d1ca13ff970362::$prefixLengthsPsr4;
|
797 |
+
$loader->prefixDirsPsr4 = ComposerStaticInitd1401a4e3eb1edea29d1ca13ff970362::$prefixDirsPsr4;
|
798 |
+
$loader->fallbackDirsPsr4 = ComposerStaticInitd1401a4e3eb1edea29d1ca13ff970362::$fallbackDirsPsr4;
|
799 |
+
$loader->classMap = ComposerStaticInitd1401a4e3eb1edea29d1ca13ff970362::$classMap;
|
800 |
|
801 |
}, null, ClassLoader::class);
|
802 |
}
|