Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
a314136829 | |||
c3649a9e24 | |||
a154a9a243 | |||
116001f0fe | |||
1d7a47c048 | |||
99744ada70 | |||
d89b1a1848 | |||
32d3b178f8 | |||
8900201ee8 | |||
4e84b6940a | |||
ab3c6e20a6 | |||
46aeb7e6bd | |||
6bf8b0fb4c |
@ -1,17 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This Software is the property of Data Development and is protected
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* by copyright law - it is NOT Freeware.
|
* file that was distributed with this source code.
|
||||||
*
|
|
||||||
* Any unauthorized use of this software without a valid license
|
|
||||||
* is a violation of the license agreement and will be prosecuted by
|
|
||||||
* civil and criminal law.
|
|
||||||
*
|
*
|
||||||
* https://www.d3data.de
|
* https://www.d3data.de
|
||||||
*
|
*
|
||||||
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
* @link https://www.oxidmodule.com
|
* @link https://www.oxidmodule.com
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -19,11 +15,12 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace D3\MailConfigChecker\Application\Controller\Admin;
|
namespace D3\MailConfigChecker\Application\Controller\Admin;
|
||||||
|
|
||||||
|
use D3\MailConfigChecker\Application\Model\Constants;
|
||||||
use OxidEsales\Eshop\Application\Controller\Admin\AdminController;
|
use OxidEsales\Eshop\Application\Controller\Admin\AdminController;
|
||||||
|
|
||||||
class MailCheckBase extends AdminController
|
class MailCheckBase extends AdminController
|
||||||
{
|
{
|
||||||
protected $_sThisTemplate = 'mailCheckBase.tpl';
|
protected $_sThisTemplate = '@'.Constants::OXID_MODULE_ID.'/admin/mailCheckBase';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return string
|
||||||
|
@ -1,17 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This Software is the property of Data Development and is protected
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* by copyright law - it is NOT Freeware.
|
* file that was distributed with this source code.
|
||||||
*
|
|
||||||
* Any unauthorized use of this software without a valid license
|
|
||||||
* is a violation of the license agreement and will be prosecuted by
|
|
||||||
* civil and criminal law.
|
|
||||||
*
|
*
|
||||||
* https://www.d3data.de
|
* https://www.d3data.de
|
||||||
*
|
*
|
||||||
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
* @link https://www.oxidmodule.com
|
* @link https://www.oxidmodule.com
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -19,13 +15,14 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace D3\MailConfigChecker\Application\Controller\Admin;
|
namespace D3\MailConfigChecker\Application\Controller\Admin;
|
||||||
|
|
||||||
|
use D3\MailConfigChecker\Application\Model\Constants;
|
||||||
use OxidEsales\Eshop\Application\Controller\Admin\AdminListController;
|
use OxidEsales\Eshop\Application\Controller\Admin\AdminListController;
|
||||||
|
|
||||||
class MailCheckMenu extends AdminListController
|
class MailCheckMenu extends AdminListController
|
||||||
{
|
{
|
||||||
protected $_sThisTemplate = 'mailCheckMenu.tpl';
|
protected $_sThisTemplate = '@'.Constants::OXID_MODULE_ID.'/admin/mailCheckMenu';
|
||||||
|
|
||||||
public function render()
|
public function render(): string
|
||||||
{
|
{
|
||||||
$this->setEditObjectId('foo');
|
$this->setEditObjectId('foo');
|
||||||
return parent::render();
|
return parent::render();
|
||||||
|
@ -1,22 +1,21 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This Software is the property of Data Development and is protected
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* by copyright law - it is NOT Freeware.
|
* file that was distributed with this source code.
|
||||||
* Any unauthorized use of this software without a valid license
|
*
|
||||||
* is a violation of the license agreement and will be prosecuted by
|
* https://www.d3data.de
|
||||||
* civil and criminal law.
|
|
||||||
* http://www.shopmodule.com
|
|
||||||
*
|
*
|
||||||
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
* @link http://www.oxidmodule.com
|
* @link https://www.oxidmodule.com
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace D3\MailConfigChecker\Application\Controller\Admin;
|
namespace D3\MailConfigChecker\Application\Controller\Admin;
|
||||||
|
|
||||||
use Assert\Assert;
|
use Assert\Assert;
|
||||||
use Assert\InvalidArgumentException;
|
use Assert\InvalidArgumentException;
|
||||||
|
use D3\MailConfigChecker\Application\Model\Constants;
|
||||||
use D3\MailConfigChecker\Application\Model\Exception\d3TranslatableLazyAssertionException;
|
use D3\MailConfigChecker\Application\Model\Exception\d3TranslatableLazyAssertionException;
|
||||||
use Exception;
|
use Exception;
|
||||||
use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController;
|
use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController;
|
||||||
@ -26,10 +25,10 @@ use OxidEsales\Eshop\Core\Registry;
|
|||||||
|
|
||||||
class MailConfigCheck extends AdminDetailsController
|
class MailConfigCheck extends AdminDetailsController
|
||||||
{
|
{
|
||||||
protected $_sThisTemplate = 'mailConfigCheck.tpl';
|
protected $_sThisTemplate = '@'.Constants::OXID_MODULE_ID.'/admin/mailConfigCheck';
|
||||||
protected $testMailAddress = 'test@example.com';
|
protected string $testMailAddress = 'test@example.com';
|
||||||
|
|
||||||
public function render()
|
public function render(): string
|
||||||
{
|
{
|
||||||
$this->checkDataAreSet();
|
$this->checkDataAreSet();
|
||||||
$this->addTplParam('shop', Registry::getConfig()->getActiveShop());
|
$this->addTplParam('shop', Registry::getConfig()->getActiveShop());
|
||||||
@ -38,7 +37,7 @@ class MailConfigCheck extends AdminDetailsController
|
|||||||
return parent::render();
|
return parent::render();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function checkDataAreSet()
|
protected function checkDataAreSet(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
/** @var Shop $shop */
|
/** @var Shop $shop */
|
||||||
@ -66,12 +65,12 @@ class MailConfigCheck extends AdminDetailsController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function checkConfiguration()
|
public function checkConfiguration(): void
|
||||||
{
|
{
|
||||||
$this->getCurrentMailer();
|
$this->getCurrentMailer();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getCurrentMailer()
|
protected function getCurrentMailer(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$shop = Registry::getConfig()->getActiveShop();
|
$shop = Registry::getConfig()->getActiveShop();
|
||||||
|
@ -1,23 +1,22 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This Software is the property of Data Development and is protected
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* by copyright law - it is NOT Freeware.
|
* file that was distributed with this source code.
|
||||||
* Any unauthorized use of this software without a valid license
|
*
|
||||||
* is a violation of the license agreement and will be prosecuted by
|
* https://www.d3data.de
|
||||||
* civil and criminal law.
|
|
||||||
* http://www.shopmodule.com
|
|
||||||
*
|
*
|
||||||
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
* @link http://www.oxidmodule.com
|
* @link https://www.oxidmodule.com
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace D3\MailConfigChecker\Application\Controller\Admin;
|
namespace D3\MailConfigChecker\Application\Controller\Admin;
|
||||||
|
|
||||||
|
use D3\MailConfigChecker\Application\Model\Constants;
|
||||||
use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController;
|
use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController;
|
||||||
|
|
||||||
class MailInfoPage extends AdminDetailsController
|
class MailInfoPage extends AdminDetailsController
|
||||||
{
|
{
|
||||||
protected $_sThisTemplate = 'mailInfoPage.tpl';
|
protected $_sThisTemplate = '@'.Constants::OXID_MODULE_ID.'/admin/mailInfoPage';
|
||||||
}
|
}
|
||||||
|
@ -1,22 +1,22 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This Software is the property of Data Development and is protected
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* by copyright law - it is NOT Freeware.
|
* file that was distributed with this source code.
|
||||||
* Any unauthorized use of this software without a valid license
|
*
|
||||||
* is a violation of the license agreement and will be prosecuted by
|
* https://www.d3data.de
|
||||||
* civil and criminal law.
|
|
||||||
* http://www.shopmodule.com
|
|
||||||
*
|
*
|
||||||
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
* @link http://www.oxidmodule.com
|
* @link https://www.oxidmodule.com
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace D3\MailConfigChecker\Application\Controller\Admin;
|
namespace D3\MailConfigChecker\Application\Controller\Admin;
|
||||||
|
|
||||||
use Assert\Assert;
|
use Assert\Assert;
|
||||||
|
use D3\MailConfigChecker\Application\Model\Constants;
|
||||||
use D3\MailConfigChecker\Application\Model\Exception\d3TranslatableLazyAssertionException;
|
use D3\MailConfigChecker\Application\Model\Exception\d3TranslatableLazyAssertionException;
|
||||||
|
use Exception;
|
||||||
use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController;
|
use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController;
|
||||||
use OxidEsales\Eshop\Application\Model\Shop;
|
use OxidEsales\Eshop\Application\Model\Shop;
|
||||||
use OxidEsales\Eshop\Core\Email;
|
use OxidEsales\Eshop\Core\Email;
|
||||||
@ -24,9 +24,9 @@ use OxidEsales\Eshop\Core\Registry;
|
|||||||
|
|
||||||
class MailTester extends AdminDetailsController
|
class MailTester extends AdminDetailsController
|
||||||
{
|
{
|
||||||
protected $_sThisTemplate = 'mailTester.tpl';
|
protected $_sThisTemplate = '@'.Constants::OXID_MODULE_ID.'/admin/mailTester';
|
||||||
|
|
||||||
public function sendMail()
|
public function sendMail(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$request = Registry::getRequest();
|
$request = Registry::getRequest();
|
||||||
@ -46,12 +46,12 @@ class MailTester extends AdminDetailsController
|
|||||||
$mail->setFrom($from);
|
$mail->setFrom($from);
|
||||||
$mail->sendEmail($to, $subject, $body);
|
$mail->sendEmail($to, $subject, $body);
|
||||||
$this->addTplParam('success', true);
|
$this->addTplParam('success', true);
|
||||||
} catch (\Exception $e) {
|
} catch ( Exception $e) {
|
||||||
Registry::getUtilsView()->addErrorToDisplay(nl2br($e->getMessage()));
|
Registry::getUtilsView()->addErrorToDisplay(nl2br($e->getMessage()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function assertContent()
|
protected function assertContent(): void
|
||||||
{
|
{
|
||||||
$request = Registry::getRequest();
|
$request = Registry::getRequest();
|
||||||
$lang = Registry::getLang();
|
$lang = Registry::getLang();
|
||||||
@ -77,7 +77,7 @@ class MailTester extends AdminDetailsController
|
|||||||
->verifyNow();
|
->verifyNow();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getMailAddressList()
|
public function getMailAddressList(): array
|
||||||
{
|
{
|
||||||
/** @var Shop $shop */
|
/** @var Shop $shop */
|
||||||
$shop = Registry::getConfig()->getActiveShop();
|
$shop = Registry::getConfig()->getActiveShop();
|
||||||
|
@ -17,6 +17,7 @@ namespace D3\MailConfigChecker\Application\Controller\Admin;
|
|||||||
|
|
||||||
use Assert\Assert;
|
use Assert\Assert;
|
||||||
use Assert\InvalidArgumentException;
|
use Assert\InvalidArgumentException;
|
||||||
|
use D3\MailConfigChecker\Application\Model\Constants;
|
||||||
use Net_SMTP;
|
use Net_SMTP;
|
||||||
use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController;
|
use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController;
|
||||||
use OxidEsales\Eshop\Application\Model\Shop;
|
use OxidEsales\Eshop\Application\Model\Shop;
|
||||||
@ -26,18 +27,18 @@ use PEAR_Error;
|
|||||||
|
|
||||||
class SmtpChecker extends AdminDetailsController
|
class SmtpChecker extends AdminDetailsController
|
||||||
{
|
{
|
||||||
protected $debug = true;
|
protected bool $debug = true;
|
||||||
|
|
||||||
protected $host;
|
protected string $host;
|
||||||
protected $port;
|
protected int $port;
|
||||||
protected $user;
|
protected string $user;
|
||||||
protected $pwd;
|
protected string $pwd;
|
||||||
protected $from;
|
protected string $from;
|
||||||
protected $to;
|
protected ?string $to = null;
|
||||||
|
|
||||||
protected $smtp;
|
protected Net_SMTP $smtp;
|
||||||
protected $action;
|
protected string $action = '';
|
||||||
protected $log = [];
|
protected array $log = [];
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
@ -68,19 +69,19 @@ class SmtpChecker extends AdminDetailsController
|
|||||||
$this->addTplParam('smtpLog', $this->log);
|
$this->addTplParam('smtpLog', $this->log);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getTemplateName()
|
public function getTemplateName(): string
|
||||||
{
|
{
|
||||||
return 'smtpCheck.tpl';
|
return '@'.Constants::OXID_MODULE_ID.'/admin/smtpCheck';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function render()
|
public function render(): ?string
|
||||||
{
|
{
|
||||||
$this->addTplParam('shop', Registry::getConfig()->getActiveShop());
|
$this->addTplParam('shop', Registry::getConfig()->getActiveShop());
|
||||||
|
|
||||||
return parent::render();
|
return parent::render();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getMailAddressList()
|
public function getMailAddressList(): array
|
||||||
{
|
{
|
||||||
/** @var Shop $shop */
|
/** @var Shop $shop */
|
||||||
$shop = Registry::getConfig()->getActiveShop();
|
$shop = Registry::getConfig()->getActiveShop();
|
||||||
@ -96,7 +97,7 @@ class SmtpChecker extends AdminDetailsController
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function sendMail()
|
public function sendMail(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$this->hostIsAvailable();
|
$this->hostIsAvailable();
|
||||||
@ -119,7 +120,7 @@ class SmtpChecker extends AdminDetailsController
|
|||||||
* @throws InvalidArgumentException
|
* @throws InvalidArgumentException
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
protected function hostIsAvailable()
|
protected function hostIsAvailable(): void
|
||||||
{
|
{
|
||||||
$this->action = __FUNCTION__;
|
$this->action = __FUNCTION__;
|
||||||
Assert::that(
|
Assert::that(
|
||||||
@ -132,7 +133,7 @@ class SmtpChecker extends AdminDetailsController
|
|||||||
$this->smtp->setDebug($this->debug, [$this, 'dumpDebug']);
|
$this->smtp->setDebug($this->debug, [$this, 'dumpDebug']);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function connect()
|
protected function connect(): void
|
||||||
{
|
{
|
||||||
$this->action = __FUNCTION__;
|
$this->action = __FUNCTION__;
|
||||||
Assert::that(
|
Assert::that(
|
||||||
@ -149,7 +150,7 @@ class SmtpChecker extends AdminDetailsController
|
|||||||
* @throws InvalidArgumentException
|
* @throws InvalidArgumentException
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
protected function auth()
|
protected function auth(): void
|
||||||
{
|
{
|
||||||
$this->action = __FUNCTION__;
|
$this->action = __FUNCTION__;
|
||||||
Assert::that(
|
Assert::that(
|
||||||
@ -162,7 +163,7 @@ class SmtpChecker extends AdminDetailsController
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function setFrom()
|
protected function setFrom(): void
|
||||||
{
|
{
|
||||||
$this->action = __FUNCTION__;
|
$this->action = __FUNCTION__;
|
||||||
Assert::that(
|
Assert::that(
|
||||||
@ -175,8 +176,12 @@ class SmtpChecker extends AdminDetailsController
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function setRecipient()
|
protected function setRecipient(): void
|
||||||
{
|
{
|
||||||
|
if (!$this->to) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$this->action = __FUNCTION__;
|
$this->action = __FUNCTION__;
|
||||||
Assert::that(
|
Assert::that(
|
||||||
$this->smtp->rcptTo($this->to),
|
$this->smtp->rcptTo($this->to),
|
||||||
@ -188,7 +193,7 @@ class SmtpChecker extends AdminDetailsController
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function sendContent()
|
protected function sendContent(): void
|
||||||
{
|
{
|
||||||
if (!Registry::getRequest()->getRequestEscapedParameter('sendmail')) {
|
if (!Registry::getRequest()->getRequestEscapedParameter('sendmail')) {
|
||||||
return;
|
return;
|
||||||
@ -207,13 +212,13 @@ class SmtpChecker extends AdminDetailsController
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function disconnect()
|
protected function disconnect(): void
|
||||||
{
|
{
|
||||||
$this->action = __FUNCTION__;
|
$this->action = __FUNCTION__;
|
||||||
$this->smtp->disconnect();
|
$this->smtp->disconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function dumpDebug($smtp, $message)
|
public function dumpDebug($smtp, $message): void
|
||||||
{
|
{
|
||||||
unset($smtp);
|
unset($smtp);
|
||||||
|
|
||||||
@ -223,7 +228,7 @@ class SmtpChecker extends AdminDetailsController
|
|||||||
$this->log[$this->action][] = trim(htmlentities($message));
|
$this->log[$this->action][] = trim(htmlentities($message));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function formatMessage(array $arguments)
|
public function formatMessage(array $arguments): ?string
|
||||||
{
|
{
|
||||||
/** @var PEAR_Error|true $response */
|
/** @var PEAR_Error|true $response */
|
||||||
$response = $arguments['value'];
|
$response = $arguments['value'];
|
||||||
|
@ -18,8 +18,10 @@ namespace D3\MailConfigChecker\Application\Controller\Admin;
|
|||||||
use Assert\InvalidArgumentException;
|
use Assert\InvalidArgumentException;
|
||||||
use D3\MailAuthenticationCheck\DMARCCheck;
|
use D3\MailAuthenticationCheck\DMARCCheck;
|
||||||
use D3\MailAuthenticationCheck\Model\DMARCResult;
|
use D3\MailAuthenticationCheck\Model\DMARCResult;
|
||||||
|
use D3\MailConfigChecker\Application\Model\Constants;
|
||||||
use D3\MailConfigChecker\Application\Model\DmarcResult as OxDmarcResult;
|
use D3\MailConfigChecker\Application\Model\DmarcResult as OxDmarcResult;
|
||||||
use D3\MailConfigChecker\Application\Model\SpfResult;
|
use D3\MailConfigChecker\Application\Model\SpfResult;
|
||||||
|
use LogicException;
|
||||||
use Mika56\SPFCheck\DNS\DNSRecordGetter;
|
use Mika56\SPFCheck\DNS\DNSRecordGetter;
|
||||||
use Mika56\SPFCheck\Model\Query;
|
use Mika56\SPFCheck\Model\Query;
|
||||||
use Mika56\SPFCheck\Model\Result;
|
use Mika56\SPFCheck\Model\Result;
|
||||||
@ -30,16 +32,16 @@ use OxidEsales\Eshop\Core\Registry;
|
|||||||
|
|
||||||
class SpfChecker extends AdminDetailsController
|
class SpfChecker extends AdminDetailsController
|
||||||
{
|
{
|
||||||
protected $_sThisTemplate = 'spfCheck.tpl';
|
protected $_sThisTemplate = '@'.Constants::OXID_MODULE_ID.'/admin/spfCheck';
|
||||||
|
|
||||||
public function render()
|
public function render(): ?string
|
||||||
{
|
{
|
||||||
$this->checkSpf();
|
$this->checkSpf();
|
||||||
$this->checkDmarc();
|
$this->checkDmarc();
|
||||||
return parent::render();
|
return parent::render();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function checkSpf()
|
protected function checkSpf(): void
|
||||||
{
|
{
|
||||||
$result = [];
|
$result = [];
|
||||||
$mailDomains = $this->getMailDomains();
|
$mailDomains = $this->getMailDomains();
|
||||||
@ -53,7 +55,7 @@ class SpfChecker extends AdminDetailsController
|
|||||||
$this->addTplParam('spf_result', $result);
|
$this->addTplParam('spf_result', $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function checkDmarc()
|
protected function checkDmarc(): void
|
||||||
{
|
{
|
||||||
$result = [];
|
$result = [];
|
||||||
$mailDomains = $this->getMailDomains();
|
$mailDomains = $this->getMailDomains();
|
||||||
@ -79,13 +81,13 @@ class SpfChecker extends AdminDetailsController
|
|||||||
function ($mailAddress) {
|
function ($mailAddress) {
|
||||||
$mailAddress = trim($mailAddress);
|
$mailAddress = trim($mailAddress);
|
||||||
try {
|
try {
|
||||||
if (! strstr($mailAddress, '@')) {
|
if ( ! str_contains( $mailAddress, '@' ) ) {
|
||||||
throw oxNew(InvalidArgumentException::class);
|
throw oxNew(InvalidArgumentException::class);
|
||||||
}
|
}
|
||||||
$addressChunks = explode('@', $mailAddress);
|
$addressChunks = explode('@', $mailAddress);
|
||||||
|
|
||||||
return array_pop($addressChunks);
|
return array_pop($addressChunks);
|
||||||
} catch (InvalidArgumentException $e) {
|
} catch (InvalidArgumentException) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -99,25 +101,17 @@ class SpfChecker extends AdminDetailsController
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function checkSpfByDomain($domain, &$summarize)
|
protected function checkSpfByDomain($domain, &$summarize): void
|
||||||
{
|
{
|
||||||
$checker = new SPFCheck(new DNSRecordGetter());
|
$checker = new SPFCheck(new DNSRecordGetter());
|
||||||
$query = new Query('', $domain);
|
$query = new Query('', $domain);
|
||||||
|
|
||||||
$result = $checker->getResult($query);
|
$result = $checker->getResult($query);
|
||||||
switch ($result->getResult()) {
|
$status = match ( $result->getResult() ) {
|
||||||
case Result::FAIL:
|
Result::FAIL, Result::NEUTRAL, Result::PASS, Result::SOFTFAIL => SpfResult::SET,
|
||||||
case Result::NEUTRAL:
|
Result::NONE => SpfResult::MISSING,
|
||||||
case Result::PASS:
|
default => SpfResult::ERROR,
|
||||||
case Result::SOFTFAIL:
|
};
|
||||||
$status = SpfResult::SET;
|
|
||||||
break;
|
|
||||||
case Result::NONE:
|
|
||||||
$status = SpfResult::MISSING;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$status = SpfResult::ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
$rawRecord = ($record = $result->getRecord()) ?
|
$rawRecord = ($record = $result->getRecord()) ?
|
||||||
$record->getRawRecord() :
|
$record->getRawRecord() :
|
||||||
@ -126,52 +120,40 @@ class SpfChecker extends AdminDetailsController
|
|||||||
$summarize[$domain] = oxNew(SpfResult::class, $status, $rawRecord);
|
$summarize[$domain] = oxNew(SpfResult::class, $status, $rawRecord);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getSpfStatusColor(SpfResult $result)
|
public function getSpfStatusColor(SpfResult $result): string
|
||||||
{
|
{
|
||||||
switch ($result->getStatus()) {
|
return match ( $result->getStatus() ) {
|
||||||
case SpfResult::SET:
|
SpfResult::SET => 'success',
|
||||||
return 'success';
|
SpfResult::ERROR => 'warning',
|
||||||
case SpfResult::ERROR:
|
default => 'danger',
|
||||||
return 'warning';
|
};
|
||||||
default:
|
|
||||||
return 'danger';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function checkDmarcByDomain($domain, &$summarize)
|
public function checkDmarcByDomain($domain, &$summarize): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$check = new DMARCCheck(new DNSRecordGetter());
|
$check = new DMARCCheck(new DNSRecordGetter());
|
||||||
$query = new Query('', $domain);
|
$query = new Query('', $domain);
|
||||||
$record = $check->getResult($query)->getRecord();
|
$record = $check->getResult($query)->getRecord();
|
||||||
|
|
||||||
switch ( $record->getRejectPolicy()->getValue() ) {
|
$status = match ( $record->getRejectPolicy()->getValue() ) {
|
||||||
case DMARCResult::REJECT_QUARANTINE:
|
DMARCResult::REJECT_QUARANTINE, DMARCResult::REJECT_REJECT => OxDmarcResult::SET,
|
||||||
case DMARCResult::REJECT_REJECT:
|
DMARCResult::REJECT_NONE => OxDmarcResult::MISSING,
|
||||||
$status = OxDmarcResult::SET;
|
default => OxDmarcResult::ERROR,
|
||||||
break;
|
};
|
||||||
case DMARCResult::REJECT_NONE:
|
|
||||||
$status = OxDmarcResult::MISSING;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$status = OxDmarcResult::ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
$summarize[$domain] = oxNew( OxDmarcResult::class, $status, $record->getRawRecord());
|
$summarize[$domain] = oxNew( OxDmarcResult::class, $status, $record->getRawRecord());
|
||||||
} catch (\LogicException) {
|
} catch ( LogicException) {
|
||||||
$summarize[$domain] = oxNew( OxDmarcResult::class, OxDmarcResult::MISSING, '');
|
$summarize[$domain] = oxNew( OxDmarcResult::class, OxDmarcResult::MISSING, '');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getDmarcStatusColor(OxDmarcResult $result)
|
public function getDmarcStatusColor(OxDmarcResult $result): string
|
||||||
{
|
{
|
||||||
switch ($result->getStatus()) {
|
return match ( $result->getStatus() ) {
|
||||||
case SpfResult::SET:
|
SpfResult::SET => 'success',
|
||||||
return 'success';
|
SpfResult::ERROR => 'warning',
|
||||||
case SpfResult::ERROR:
|
default => 'danger',
|
||||||
return 'warning';
|
};
|
||||||
default:
|
|
||||||
return 'danger';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
21
Application/Model/Constants.php
Normal file
21
Application/Model/Constants.php
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
* https://www.d3data.de
|
||||||
|
*
|
||||||
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
|
* @link https://www.oxidmodule.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace D3\MailConfigChecker\Application\Model;
|
||||||
|
|
||||||
|
class Constants
|
||||||
|
{
|
||||||
|
public const OXID_MODULE_ID = 'd3mailconfigchecker';
|
||||||
|
}
|
@ -30,12 +30,12 @@ class DmarcResult
|
|||||||
$this->record = $record;
|
$this->record = $record;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getStatus()
|
public function getStatus(): string
|
||||||
{
|
{
|
||||||
return $this->status;
|
return $this->status;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getRecord()
|
public function getRecord(): ?string
|
||||||
{
|
{
|
||||||
return $this->record;
|
return $this->record;
|
||||||
}
|
}
|
||||||
|
@ -21,8 +21,8 @@ class SpfResult
|
|||||||
public const MISSING = 'missing';
|
public const MISSING = 'missing';
|
||||||
public const ERROR = 'error';
|
public const ERROR = 'error';
|
||||||
|
|
||||||
protected $status;
|
protected string $status;
|
||||||
protected $record;
|
protected ?string $record;
|
||||||
|
|
||||||
public function __construct(string $status, ?string $record = null)
|
public function __construct(string $status, ?string $record = null)
|
||||||
{
|
{
|
||||||
@ -30,12 +30,12 @@ class SpfResult
|
|||||||
$this->record = $record;
|
$this->record = $record;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getStatus()
|
public function getStatus(): string
|
||||||
{
|
{
|
||||||
return $this->status;
|
return $this->status;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getRecord()
|
public function getRecord(): ?string
|
||||||
{
|
{
|
||||||
return $this->record;
|
return $this->record;
|
||||||
}
|
}
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
$aLang = include __DIR__."/../../de/translations.php";
|
|
@ -1,3 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
$aLang = include __DIR__."/../../en/translations.php";
|
|
@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
* https://www.d3data.de
|
||||||
|
*
|
||||||
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
|
* @link https://www.oxidmodule.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
// @codeCoverageIgnoreStart
|
||||||
|
|
||||||
|
$sLangName = 'Deutsch';
|
||||||
|
|
||||||
|
$aLang = include __DIR__."/../../de/translations.php";
|
||||||
|
|
||||||
|
// @codeCoverageIgnoreEnd
|
@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
* https://www.d3data.de
|
||||||
|
*
|
||||||
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
|
* @link https://www.oxidmodule.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
// @codeCoverageIgnoreStart
|
||||||
|
|
||||||
|
$sLangName = 'English';
|
||||||
|
|
||||||
|
$aLang = include __DIR__."/../../en/translations.php";
|
||||||
|
|
||||||
|
// @codeCoverageIgnoreEnd
|
@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
* https://www.d3data.de
|
||||||
|
*
|
||||||
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
|
* @link https://www.oxidmodule.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
// @codeCoverageIgnoreStart
|
||||||
|
|
||||||
|
$sLangName = 'Deutsch';
|
||||||
|
|
||||||
|
$aLang = include __DIR__."/../../de/translations.php";
|
||||||
|
|
||||||
|
// @codeCoverageIgnoreEnd
|
@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
* https://www.d3data.de
|
||||||
|
*
|
||||||
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
|
* @link https://www.oxidmodule.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
// @codeCoverageIgnoreStart
|
||||||
|
|
||||||
|
$sLangName = 'English';
|
||||||
|
|
||||||
|
$aLang = include __DIR__."/../../en/translations.php";
|
||||||
|
|
||||||
|
// @codeCoverageIgnoreEnd
|
@ -1,5 +1,18 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
* https://www.d3data.de
|
||||||
|
*
|
||||||
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
|
* @link https://www.oxidmodule.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'charset' => 'UTF-8',
|
'charset' => 'UTF-8',
|
||||||
'D3_MENU_MAILCHECKER' => 'E-Mail PrĂĽfung',
|
'D3_MENU_MAILCHECKER' => 'E-Mail PrĂĽfung',
|
||||||
|
@ -1,5 +1,18 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
* https://www.d3data.de
|
||||||
|
*
|
||||||
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
|
* @link https://www.oxidmodule.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
"charset" => "UTF-8",
|
"charset" => "UTF-8",
|
||||||
"D3_MENU_MAILCHECKER" => "Email checking",
|
"D3_MENU_MAILCHECKER" => "Email checking",
|
||||||
|
18
CHANGELOG.md
18
CHANGELOG.md
@ -4,7 +4,23 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
## [Unreleased](https://git.d3data.de/D3Public/MyModule/compare/2.1.1.0...rel_2.x)
|
## [Unreleased](https://git.d3data.de/D3Public/MyModule/compare/3.0.1.0...rel_3.x)
|
||||||
|
|
||||||
|
## [3.0.1.0](https://git.d3data.de/D3Public/MailConfigChecker/compare/3.0.0.0...3.0.1.0) - 2024-07-10
|
||||||
|
### Added
|
||||||
|
- get mailer check shows PHPMailer communication with the mail server (can be different from the SMTP check)
|
||||||
|
- recipient for get mailer check can modified in hidden form element
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- SMTP check uses shop domain for EHLO
|
||||||
|
|
||||||
|
## [3.0.0.0](https://git.d3data.de/D3Public/MailConfigChecker/compare/2.1.0.0...3.0.0.0) - 2024-06-05
|
||||||
|
### Added
|
||||||
|
- OXID 7.x support
|
||||||
|
- Twig templates (alongside to Smarty)
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
- OXID 6.x support
|
||||||
|
|
||||||
## [2.1.1.0](https://git.d3data.de/D3Public/MailConfigChecker/compare/2.1.0.0...2.1.1.0) - 2024-07-10
|
## [2.1.1.0](https://git.d3data.de/D3Public/MailConfigChecker/compare/2.1.0.0...2.1.1.0) - 2024-07-10
|
||||||
### Added
|
### Added
|
||||||
|
@ -19,7 +19,7 @@ Dieses Paket erfordert einen mit Composer installierten OXID eShop in einer in d
|
|||||||
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
composer require d3/mailconfigchecker:^2.0
|
composer require d3/mailconfigchecker:^3.0
|
||||||
```
|
```
|
||||||
|
|
||||||
Aktivieren Sie das Modul im Shopadmin unter "Erweiterungen -> Module".
|
Aktivieren Sie das Modul im Shopadmin unter "Erweiterungen -> Module".
|
||||||
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
@ -31,8 +31,8 @@
|
|||||||
"GPL-3.0-or-later"
|
"GPL-3.0-or-later"
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=7.3",
|
"php": "^8",
|
||||||
"oxid-esales/oxideshop-ce": "6.10 - 6.14",
|
"oxid-esales/oxideshop-ce": "7.0 - 7.1",
|
||||||
"pear/net_smtp": "^1.11",
|
"pear/net_smtp": "^1.11",
|
||||||
"mika56/spfcheck": "^2.1.1",
|
"mika56/spfcheck": "^2.1.1",
|
||||||
"d3/mailauthenticationcheck": "^0.1.0",
|
"d3/mailauthenticationcheck": "^0.1.0",
|
||||||
@ -44,20 +44,9 @@
|
|||||||
"phpstan/phpstan": "^1.8",
|
"phpstan/phpstan": "^1.8",
|
||||||
"boxblinkracer/phpunuhi": "^1.12"
|
"boxblinkracer/phpunuhi": "^1.12"
|
||||||
},
|
},
|
||||||
"extra": {
|
|
||||||
"oxideshop": {
|
|
||||||
"blacklist-filter": [
|
|
||||||
"*.md",
|
|
||||||
"composer.json",
|
|
||||||
".php-cs-fixer.php",
|
|
||||||
"*.neon"
|
|
||||||
],
|
|
||||||
"target-directory": "d3/mailconfigchecker"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
"D3\\MailConfigChecker\\": "../../../source/modules/d3/mailconfigchecker"
|
"D3\\MailConfigChecker\\": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
22
metadata.php
22
metadata.php
@ -20,17 +20,17 @@ use D3\MailConfigChecker\Application\Controller\Admin\MailInfoPage;
|
|||||||
use D3\MailConfigChecker\Application\Controller\Admin\MailTester;
|
use D3\MailConfigChecker\Application\Controller\Admin\MailTester;
|
||||||
use D3\MailConfigChecker\Application\Controller\Admin\SpfChecker;
|
use D3\MailConfigChecker\Application\Controller\Admin\SpfChecker;
|
||||||
use D3\MailConfigChecker\Application\Controller\Admin\SmtpChecker;
|
use D3\MailConfigChecker\Application\Controller\Admin\SmtpChecker;
|
||||||
|
use D3\MailConfigChecker\Application\Model\Constants;
|
||||||
|
|
||||||
$sMetadataVersion = '2.1';
|
$sMetadataVersion = '2.1';
|
||||||
|
|
||||||
$sModuleId = 'd3mailconfigchecker';
|
|
||||||
$logo = '<img src="https://logos.oxidmodule.com/d3logo.svg" alt="(D3)" style="height:1em;width:1em">';
|
$logo = '<img src="https://logos.oxidmodule.com/d3logo.svg" alt="(D3)" style="height:1em;width:1em">';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Module information
|
* Module information
|
||||||
*/
|
*/
|
||||||
$aModule = [
|
$aModule = [
|
||||||
'id' => $sModuleId,
|
'id' => Constants::OXID_MODULE_ID,
|
||||||
'title' => [
|
'title' => [
|
||||||
'de' => $logo.' E-Mail Konfigurationsprüfung',
|
'de' => $logo.' E-Mail Konfigurationsprüfung',
|
||||||
'en' => $logo.' Mail Configuration Check Tool',
|
'en' => $logo.' Mail Configuration Check Tool',
|
||||||
@ -40,7 +40,7 @@ $aModule = [
|
|||||||
'en' => '',
|
'en' => '',
|
||||||
],
|
],
|
||||||
'thumbnail' => 'picture.svg',
|
'thumbnail' => 'picture.svg',
|
||||||
'version' => '2.1.1.0',
|
'version' => '3.0.1.0',
|
||||||
'author' => 'D³ Data Development (Inh.: Thomas Dartsch)',
|
'author' => 'D³ Data Development (Inh.: Thomas Dartsch)',
|
||||||
'email' => 'support@shopmodule.com',
|
'email' => 'support@shopmodule.com',
|
||||||
'url' => 'https://www.oxidmodule.com/',
|
'url' => 'https://www.oxidmodule.com/',
|
||||||
@ -54,13 +54,13 @@ $aModule = [
|
|||||||
'd3mailtester' => MailTester::class,
|
'd3mailtester' => MailTester::class,
|
||||||
],
|
],
|
||||||
'templates' => [
|
'templates' => [
|
||||||
'mailCheckBase.tpl' => 'd3/mailconfigchecker/Application/views/admin/tpl/mailcheckbase.tpl',
|
'@' . Constants::OXID_MODULE_ID . '/admin/mailCheckBase.tpl' => 'views/smarty/admin/mailcheckbase.tpl',
|
||||||
'mailCheckMenu.tpl' => 'd3/mailconfigchecker/Application/views/admin/tpl/mailcheckmenu.tpl',
|
'@' . Constants::OXID_MODULE_ID . '/admin/mailCheckMenu.tpl' => 'views/smarty/admin/mailcheckmenu.tpl',
|
||||||
'mailInfoPage.tpl' => 'd3/mailconfigchecker/Application/views/admin/tpl/mailinfopage.tpl',
|
'@' . Constants::OXID_MODULE_ID . '/admin/mailInfoPage.tpl' => 'views/smarty/admin/mailinfopage.tpl',
|
||||||
'mailConfigCheck.tpl' => 'd3/mailconfigchecker/Application/views/admin/tpl/mailconfigcheck.tpl',
|
'@' . Constants::OXID_MODULE_ID . '/admin/mailConfigCheck.tpl' => 'views/smarty/admin/mailconfigcheck.tpl',
|
||||||
'smtpCheck.tpl' => 'd3/mailconfigchecker/Application/views/admin/tpl/smtpCheck.tpl',
|
'@' . Constants::OXID_MODULE_ID . '/admin/smtpCheck.tpl' => 'views/smarty/admin/smtpCheck.tpl',
|
||||||
'spfCheck.tpl' => 'd3/mailconfigchecker/Application/views/admin/tpl/spfCheck.tpl',
|
'@' . Constants::OXID_MODULE_ID . '/admin/spfCheck.tpl' => 'views/smarty/admin/spfCheck.tpl',
|
||||||
'mailTester.tpl' => 'd3/mailconfigchecker/Application/views/admin/tpl/mailTester.tpl',
|
'@' . Constants::OXID_MODULE_ID . '/admin/mailTester.tpl' => 'views/smarty/admin/mailTester.tpl',
|
||||||
'inc_bootstrap.tpl' => 'd3/mailconfigchecker/Application/views/admin/tpl/inc/bootstrap.tpl',
|
'@' . Constants::OXID_MODULE_ID . '/admin/inc_bootstrap.tpl' => 'views/smarty/admin/inc/bootstrap.tpl',
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
[{include file="headitem.tpl" title="d3mxd3cleartmp"|oxmultilangassign}]
|
[{include file="headitem.tpl" title="d3mxd3cleartmp"|oxmultilangassign}]
|
||||||
[{include file="inc_bootstrap.tpl"}]
|
[{include file="@d3mailconfigchecker/admin/inc_bootstrap.tpl"}]
|
||||||
|
|
||||||
[{if $readonly}]
|
[{if $readonly}]
|
||||||
[{assign var="readonly" value="readonly disabled"}]
|
[{assign var="readonly" value="readonly disabled"}]
|
@ -1,5 +1,5 @@
|
|||||||
[{include file="headitem.tpl" title="d3mxd3cleartmp"|oxmultilangassign}]
|
[{include file="headitem.tpl" title="d3mxd3cleartmp"|oxmultilangassign}]
|
||||||
[{include file="inc_bootstrap.tpl"}]
|
[{include file="@d3mailconfigchecker/admin/inc_bootstrap.tpl"}]
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
span.btn {
|
span.btn {
|
@ -1,5 +1,5 @@
|
|||||||
[{include file="headitem.tpl" title="d3mxd3cleartmp"|oxmultilangassign}]
|
[{include file="headitem.tpl" title="d3mxd3cleartmp"|oxmultilangassign}]
|
||||||
[{include file="inc_bootstrap.tpl"}]
|
[{include file="@d3mailconfigchecker/admin/inc_bootstrap.tpl"}]
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
span.btn {
|
span.btn {
|
@ -1,5 +1,5 @@
|
|||||||
[{include file="headitem.tpl" title="GENERAL_ADMIN_TITLE"|oxmultilangassign}]
|
[{include file="headitem.tpl" title="GENERAL_ADMIN_TITLE"|oxmultilangassign}]
|
||||||
[{include file="inc_bootstrap.tpl"}]
|
[{include file="@d3mailconfigchecker/admin/inc_bootstrap.tpl"}]
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.communicationoutput,
|
.communicationoutput,
|
@ -1,5 +1,5 @@
|
|||||||
[{include file="headitem.tpl" title="GENERAL_ADMIN_TITLE"|oxmultilangassign}]
|
[{include file="headitem.tpl" title="GENERAL_ADMIN_TITLE"|oxmultilangassign}]
|
||||||
[{include file="inc_bootstrap.tpl"}]
|
[{include file="@d3mailconfigchecker/admin/inc_bootstrap.tpl"}]
|
||||||
|
|
||||||
<form name="transfer" id="transfer" action="[{$oViewConf->getSelfLink()}]" method="post">
|
<form name="transfer" id="transfer" action="[{$oViewConf->getSelfLink()}]" method="post">
|
||||||
[{$oViewConf->getHiddenSid()}]
|
[{$oViewConf->getHiddenSid()}]
|
14
views/twig/admin/inc/bootstrap.html.twig
Normal file
14
views/twig/admin/inc/bootstrap.html.twig
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<link rel="stylesheet" href="{{ oViewConf.getModuleUrl('d3mailconfigchecker', 'out/src/css/bootstrap.min.css') }}">
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
font-size: 12px;
|
||||||
|
box-sizing: initial;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: inherit;
|
||||||
|
}
|
||||||
|
select {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
</style>
|
14
views/twig/admin/mailCheckBase.html.twig
Normal file
14
views/twig/admin/mailCheckBase.html.twig
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>{{ translate({ ident: "GENERAL_ADMIN_TITLE" }) }}</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<!-- frames -->
|
||||||
|
<frameset rows="10%,*" style="border: none" onload="top.loadEditFrame('{{ oViewConf.getSelfLink()|raw }}&{{ editurl }}{% if oxid %}&oxid={{ oxid }}{% endif %}');">
|
||||||
|
<frame src="{{ oViewConf.getSelfLink()|raw }}&{{ listurl }}{% if oxid %}&oxid={{ oxid }}{% endif %}" name="list" id="list" style="border: none" frameborder="0" scrolling="Auto" noresize marginwidth="0" marginheight="0">
|
||||||
|
<frame src="" name="edit" id="edit" style="border: none" frameborder="0" scrolling="Auto" noresize marginwidth="0" marginheight="0">
|
||||||
|
</frameset>
|
||||||
|
|
||||||
|
</html>
|
39
views/twig/admin/mailCheckMenu.html.twig
Normal file
39
views/twig/admin/mailCheckMenu.html.twig
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{% include "headitem.html.twig" with {title: "GENERAL_ADMIN_TITLE"|translate, box: "list"} %}
|
||||||
|
|
||||||
|
{% if readonly %}
|
||||||
|
{% set readonly = "readonly disabled" %}
|
||||||
|
{% else %}
|
||||||
|
{% set readonly = "" %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
<!--
|
||||||
|
window.onload = function ()
|
||||||
|
{
|
||||||
|
{% if updatenav %}
|
||||||
|
var oTransfer = top.basefrm.edit.document.getElementById( "transfer" );
|
||||||
|
oTransfer.updatenav.value = 1;
|
||||||
|
oTransfer.cl.value = '{{ default_edit }}';
|
||||||
|
{% endif %}
|
||||||
|
top.reloadEditFrame();
|
||||||
|
}
|
||||||
|
//-->
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<form name="search" id="search" action="{{ oViewConf.getSelfLink()|raw }}" method="post">
|
||||||
|
{% include "_formparams.html.twig" with {cl: oViewConf.getActiveClassName()|raw, lstrt: lstrt, actedit: actedit, oxid: oxid, fnc: "", language: actlang, editlanguage: actlang} %}
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% include "pagetabsnippet.html.twig" %}
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
if (parent.parent != null && parent.parent.setTitle )
|
||||||
|
{ parent.parent.sShopTitle = "{{ actshopobj.oxshops__oxname.getRawValue()|addslashes }}";
|
||||||
|
parent.parent.sMenuItem = "{{ translate({ ident: "SHOP_LIST_MENUITEM" }) }}";
|
||||||
|
parent.parent.sMenuSubItem = "{{ translate({ ident: "SHOP_LIST_MENUSUBITEM" }) }}";
|
||||||
|
parent.parent.sWorkArea = "{{ _act }}";
|
||||||
|
parent.parent.setTitle();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
80
views/twig/admin/mailConfigCheck.html.twig
Normal file
80
views/twig/admin/mailConfigCheck.html.twig
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
{% include "headitem.html.twig" with {title: "d3mxd3cleartmp"|translate} %}
|
||||||
|
{% include "@d3mailconfigchecker/admin/inc/bootstrap.html.twig" %}
|
||||||
|
|
||||||
|
<style>
|
||||||
|
span.btn {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.communicationoutput {
|
||||||
|
background-color: black;
|
||||||
|
color: white;
|
||||||
|
max-height: 500px;
|
||||||
|
overflow: auto;
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
{% set readonly = "readonly disabled" %}
|
||||||
|
|
||||||
|
<form name="transfer" id="transfer" action="{{ oViewConf.getSelfLink()|raw }}" method="post">
|
||||||
|
{{ oViewConf.getHiddenSid()|raw }}
|
||||||
|
<input type="hidden" name="oxid" value="{{ oxid }}">
|
||||||
|
<input type="hidden" name="oxidCopy" value="{{ oxid }}">
|
||||||
|
<input type="hidden" name="cl" value="{{ oViewConf.getActiveClassName() }}">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 col-md-6 col-lg-4 mb-4">
|
||||||
|
<div>
|
||||||
|
<label class="col-4 form-label" for="oxshops__oxsmtp">{{ translate({ ident: "SHOP_MAIN_SMTPSERVER" }) }}</label>
|
||||||
|
<input type="text" class="col-7 editinput" size="35" maxlength="{{ shop.oxshops__oxsmtp.fldmax_length }}" id="oxshops__oxsmtp" value="{{ shop.getFieldData('oxsmtp') }}" {{ readonly }}>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="col-4 form-label" for="oxshops__oxsmtpuser">{{ translate({ ident: "SHOP_MAIN_SMTPUSER" }) }}</label>
|
||||||
|
<input type="text" class="col-7 editinput" size="35" maxlength="{{ shop.oxshops__oxsmtpuser.fldmax_length }}" id="oxshops__oxsmtpuser" value="{{ shop.getFieldData('oxsmtpuser') }}" {{ readonly }}>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="col-4 form-label" for="oxshops__oxinfoemail">{{ translate({ ident: "SHOP_MAIN_INFOEMAIL" }) }}</label>
|
||||||
|
<input type="text" class="col-7 editinput" size="35" maxlength="{{ shop.oxshops__oxinfoemail.fldmax_length }}" id="oxshops__oxinfoemail" value="{{ shop.getFieldData('oxinfoemail') }}" {{ readonly }}>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="col-4 form-label" for="oxshops__oxorderemail">{{ translate({ ident: "SHOP_MAIN_ORDEREMAIL" }) }}</label>
|
||||||
|
<input type="text" class="col-7 editinput" size="35" maxlength="{{ shop.oxshops__oxorderemail.fldmax_length }}" id="oxshops__oxorderemail" value="{{ shop.getFieldData('oxorderemail') }}" {{ readonly }}>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="col-4 form-label" for="oxshops__oxowneremail">{{ translate({ ident: "SHOP_MAIN_OWNEREMAIL" }) }}</label>
|
||||||
|
<input type="text" class="col-7 editinput" size="35" maxlength="{{ shop.oxshops__oxowneremail.fldmax_length }}" id="oxshops__oxowneremail" value="{{ shop.getFieldData('oxowneremail') }}" {{ readonly }}>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-12 col-md-6 col-lg-4">
|
||||||
|
{% if mailer %}
|
||||||
|
<div>
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_CFGCHECK_SHOPSEND", suffix: "COLON" }) }}
|
||||||
|
{% if mailer == 'mail' %}
|
||||||
|
<button type="button" class="btn btn-danger">{{ translate({ ident: "D3_MAILCHECKER_CFGCHECK_SHOPSEND_PHPMAILER" }) }}</button><br>
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_CFGCHECK_SHOPSEND_PHPMAILER_DESC" }) }}
|
||||||
|
{% else %}
|
||||||
|
<span class="btn btn-success">{{ translate({ ident: "D3_MAILCHECKER_CFGCHECK_SHOPSEND_SMTP" }) }}</span><br>
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_CFGCHECK_SHOPSEND_SMTP_DESC" }) }}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-12 communicationoutput">
|
||||||
|
{{ communication|raw }}
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<form name="myedit" id="myedit" action="{{ oViewConf.getSelfLink()|raw }}" method="post">
|
||||||
|
{{ oViewConf.getHiddenSid()|raw }}
|
||||||
|
<input type="hidden" name="cl" value="{{ oViewConf.getActiveClassName() }}">
|
||||||
|
<input type="hidden" name="fnc" value="checkConfiguration">
|
||||||
|
<input type="hidden" name="recipient" value="{{ recipient }}">
|
||||||
|
<button type="submit" class="btn btn-primary">{{ translate({ ident: "D3_MAILCHECKER_CFGCHECK_STARTCHECK" }) }}</button>
|
||||||
|
</form>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% include "bottomnaviitem.html.twig" %}
|
||||||
|
{% include "bottomitem.html.twig" %}
|
34
views/twig/admin/mailInfoPage.html.twig
Normal file
34
views/twig/admin/mailInfoPage.html.twig
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
{% include "headitem.html.twig" with {title: "d3mxd3cleartmp"|translate} %}
|
||||||
|
{% include "@d3mailconfigchecker/admin/inc/bootstrap.html.twig" %}
|
||||||
|
|
||||||
|
<style>
|
||||||
|
span.btn {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
{% set readonly = "readonly disabled" %}
|
||||||
|
|
||||||
|
<form name="transfer" id="transfer" action="{{ oViewConf.getSelfLink()|raw }}" method="post">
|
||||||
|
{{ oViewConf.getHiddenSid()|raw }}
|
||||||
|
<input type="hidden" name="oxid" value="{{ oxid }}">
|
||||||
|
<input type="hidden" name="oxidCopy" value="{{ oxid }}">
|
||||||
|
<input type="hidden" name="cl" value="{{ oViewConf.getActiveClassName() }}">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 col-md-10 col-lg-8 mb-4">
|
||||||
|
<p>
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_INFO_1" }) }}
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_INFO_2" }) }}
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_INFO_3" }) }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% include "bottomnaviitem.html.twig" %}
|
||||||
|
{% include "bottomitem.html.twig" %}
|
71
views/twig/admin/mailTester.html.twig
Normal file
71
views/twig/admin/mailTester.html.twig
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
{% include "headitem.html.twig" with {title: "d3mxd3cleartmp"|translate} %}
|
||||||
|
{% include "@d3mailconfigchecker/admin/inc/bootstrap.html.twig" %}
|
||||||
|
|
||||||
|
{% if readonly %}
|
||||||
|
{% set readonly = "readonly disabled" %}
|
||||||
|
{% else %}
|
||||||
|
{% set readonly = "" %}
|
||||||
|
{% endif %}
|
||||||
|
<form name="transfer" id="transfer" action="{{ oViewConf.getSelfLink()|raw }}" method="post">
|
||||||
|
{{ oViewConf.getHiddenSid()|raw }}
|
||||||
|
<input type="hidden" name="oxid" value="{{ oxid }}">
|
||||||
|
<input type="hidden" name="oxidCopy" value="{{ oxid }}">
|
||||||
|
<input type="hidden" name="cl" value="{{ oViewConf.getActiveClassName() }}">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% if success %}
|
||||||
|
<div class="alert alert-success">{{ translate({ ident: "D3_MAILCHECKER_TESTMAIL_SUCCESS" }) }}</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="col-12 col-md-10 col-lg-8 mb-4">
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_TESTMAIL_DESC" }) }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h5>{{ translate({ ident: "D3_MAILCHECKER_SPFRESULT_LINKS" }) }}</h5>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://mxtoolbox.com/EmailHeaders.aspx">
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_TESTMAIL_HEADERANALYSIS" }) }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 col-md-6 col-lg-4 mb-4">
|
||||||
|
<form name="myedit" id="myedit" action="{{ oViewConf.getSelfLink()|raw }}" method="post">
|
||||||
|
{{ oViewConf.getHiddenSid()|raw }}
|
||||||
|
<input type="hidden" name="cl" value="{{ oViewConf.getActiveClassName() }}">
|
||||||
|
<input type="hidden" name="fnc" value="sendMail">
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label class="col-4 form-label" for="sender">{{ translate({ ident: "D3_MAILCHECKER_SMTPCHECK_SENDER" }) }}</label>
|
||||||
|
<select name="from" class="col-7 editinput" id="sender">
|
||||||
|
{% for address in oView.getMailAddressList() %}
|
||||||
|
<option value="{{ address }}" {% if sender == address %}selected{% endif %}>{{ address }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="col-4 form-label" for="recipient">{{ translate({ ident: "D3_MAILCHECKER_SMTPCHECK_RECIPIENT" }) }}</label>
|
||||||
|
<input name="to" type="text" class="col-7 editinput" size="35" maxlength="255" id="recipient" value="{{ recipient }}">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="col-4 form-label" for="subject">{{ translate({ ident: "D3_MAILCHECKER_TESTMAIL_SUBJECT" }) }}</label>
|
||||||
|
<input type="text" class="col-7 editinput" id="subject" maxlength="255" name="subject" value="{{ subject }}">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="col-4 form-label" for="body">{{ translate({ ident: "D3_MAILCHECKER_TESTMAIL_BODY" }) }}</label>
|
||||||
|
<textarea name="body" class="col-7 editinput" id="body" maxlength="255" style="height: 100px">{% apply spaceless %}
|
||||||
|
{{ body }}
|
||||||
|
{% endapply %}</textarea>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button type="submit" class="btn btn-primary offset-4">{{ translate({ ident: "D3_MAILCHECKER_TESTMAIL_SENDMAIL" }) }}</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% include "bottomnaviitem.html.twig" %}
|
||||||
|
|
||||||
|
{% include "bottomitem.html.twig" %}
|
96
views/twig/admin/smtpCheck.html.twig
Normal file
96
views/twig/admin/smtpCheck.html.twig
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
{% include "headitem.html.twig" with {title: "GENERAL_ADMIN_TITLE"|translate} %}
|
||||||
|
{% include "@d3mailconfigchecker/admin/inc/bootstrap.html.twig" %}
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.communicationoutput,
|
||||||
|
.communicationoutput dl dt,
|
||||||
|
.communicationoutput dl dd {
|
||||||
|
background-color: black;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<form name="transfer" id="transfer" action="{{ oViewConf.getSelfLink()|raw }}" method="post">
|
||||||
|
{{ oViewConf.getHiddenSid()|raw }}
|
||||||
|
<input type="hidden" name="oxid" value="{{ oxid }}">
|
||||||
|
<input type="hidden" name="oxidCopy" value="{{ oxid }}">
|
||||||
|
<input type="hidden" name="cl" value="{{ oViewConf.getActiveClassName() }}">
|
||||||
|
<input type="hidden" name="editlanguage" value="{{ editlanguage }}">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% if success %}
|
||||||
|
<div class="alert alert-success">{{ translate({ ident: "D3_MAILCHECKER_SMTPCHECK_SUCCESS" }) }}</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 col-md-6 col-lg-4 mb-4">
|
||||||
|
<p>
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_SMTPCHECK_DESC1" }) }}
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_SMTPCHECK_DESC2" }) }}
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_SMTPCHECK_DESC3" }) }}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<form name="myedit" id="myedit" action="{{ oViewConf.getSelfLink()|raw }}" method="post">
|
||||||
|
{{ oViewConf.getHiddenSid()|raw }}
|
||||||
|
<input type="hidden" name="cl" value="{{ oViewConf.getActiveClassName() }}">
|
||||||
|
<input type="hidden" name="fnc" value="sendMail">
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label class="col-4 form-label" for="oxshops__oxsmtp">{{ translate({ ident: "SHOP_MAIN_SMTPSERVER" }) }}</label>
|
||||||
|
<input type="text" class="col-7 editinput" size="35" maxlength="{{ shop.oxshops__oxsmtp.fldmax_length }}" id="oxshops__oxsmtp" name="smtpHost" value="{% if smtpHost %}{{ smtpHost }}{% else %}{{ shop.getFieldData('oxsmtp') }}{% endif %}">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="col-4 form-label" for="oxshops__oxsmtpuser">{{ translate({ ident: "SHOP_MAIN_SMTPUSER" }) }}</label>
|
||||||
|
<input type="text" class="col-7 editinput" size="35" maxlength="{{ shop.oxshops__oxsmtpuser.fldmax_length }}" id="oxshops__oxsmtpuser" name="smtpUser" value="{% if smtpUser %}{{ smtpUser }}{% else %}{{ shop.getFieldData('oxsmtpuser') }}{% endif %}">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="col-4 form-label" for="oxshops__oxsmtppwd">{{ translate({ ident: "SHOP_MAIN_SMTPPASSWORD" }) }}</label>
|
||||||
|
<input type="password" class="col-7 editinput" size="35" maxlength="{{ shop.oxshops__oxsmtppwd.fldmax_length }}" id="oxshops__oxsmtppwd" name="smtpPwd" value="{% if smtpPwd %}{{ smtpPwd }}{% else %}{{ shop.getFieldData('oxsmtppwd') }}{% endif %}">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="col-4 form-label" for="sender">{{ translate({ ident: "D3_MAILCHECKER_SMTPCHECK_SENDER" }) }}</label>
|
||||||
|
<select name="from" class="col-7 editinput" id="sender">
|
||||||
|
{% for address in oView.getMailAddressList() %}
|
||||||
|
<option value="{{ address }}">{{ address }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="col-4 form-label" for="recipient">{{ translate({ ident: "D3_MAILCHECKER_SMTPCHECK_RECIPIENT" }) }}</label>
|
||||||
|
<input name="to" type="text" class="col-7 editinput" size="35" maxlength="255" id="recipient" value="{{ recipient }}">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="col-4 form-label" for="sendmail">{{ translate({ ident: "D3_MAILCHECKER_SMTPCHECK_TESTSENDMAIL" }) }}</label>
|
||||||
|
<input type="checkbox" class="col-7 editinput" id="sendmail" name="sendmail" value="1" {% if sendMail %}checked{% endif %}>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button type="submit" class="btn btn-primary offset-4">{{ translate({ ident: "D3_MAILCHECKER_SMTPCHECK_STARTTEST" }) }}</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-12 col-md-6 col-lg-4 mb-4 {% if smtpLog %}communicationoutput{% endif %}">
|
||||||
|
{% for action, logItems in smtpLog %}
|
||||||
|
<dl>
|
||||||
|
<dt>{{ loop.index }} - {{ action }}</dt>
|
||||||
|
<dd>
|
||||||
|
<ul>
|
||||||
|
{% for logItem in logItems %}
|
||||||
|
<li>
|
||||||
|
{{ logItem }}
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% include "bottomnaviitem.html.twig" %}
|
||||||
|
|
||||||
|
{% include "bottomitem.html.twig" %}
|
112
views/twig/admin/spfCheck.html.twig
Normal file
112
views/twig/admin/spfCheck.html.twig
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
{% include "headitem.html.twig" with {title: "GENERAL_ADMIN_TITLE"|translate} %}
|
||||||
|
{% include "@d3mailconfigchecker/admin/inc/bootstrap.html.twig" %}
|
||||||
|
|
||||||
|
<form name="transfer" id="transfer" action="{{ oViewConf.getSelfLink()|raw }}" method="post">
|
||||||
|
{{ oViewConf.getHiddenSid()|raw }}
|
||||||
|
<input type="hidden" name="oxid" value="{{ oxid }}">
|
||||||
|
<input type="hidden" name="oxidCopy" value="{{ oxid }}">
|
||||||
|
<input type="hidden" name="cl" value="{{ oViewConf.getActiveClassName() }}">
|
||||||
|
<input type="hidden" name="editlanguage" value="{{ editlanguage }}">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 mb-4">
|
||||||
|
<h4>{{ translate({ ident: "D3_MAILCHECKER_SPFRESULT_HL" }) }}</h4>
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_SPFRESULT_DESC" }) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 mb-4">
|
||||||
|
<div class="row">
|
||||||
|
{% for domain, spf in spf_result %}
|
||||||
|
<div class="col-12 col-md-6 col-lg-3">
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-header text-white bg-{{ oView.getSpfStatusColor(spf) }}">
|
||||||
|
{{ domain }}
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<p>{{ translate({ ident: "D3_MAILCHECKER_SPFRESULT_"|cat(spf.getStatus())|upper }) }}</p>
|
||||||
|
{% if spf.getRecord() %}
|
||||||
|
<p>
|
||||||
|
<label for="{{ domain }}_record">{{ translate({ ident: "D3_MAILCHECKER_RECORD", suffix: "COLON" }) }}</label>
|
||||||
|
<input type="text" id="{{ domain }}_record" value="{{ spf.getRecord() }}" style="width: 50%;" readonly disabled>
|
||||||
|
</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<h5>{{ translate({ ident: "D3_MAILCHECKER_SPFRESULT_LINKS" }) }}</h5>
|
||||||
|
<ul>
|
||||||
|
{% if spf.getRecord() %}
|
||||||
|
<li>
|
||||||
|
<a href="https://mxtoolbox.com/SuperTool.aspx?action=spf%3a{{ domain }}&run=toolpage">
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_SPFRESULT_LINK_ANALYSIS" }) }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
|
<li>
|
||||||
|
<a href="https://mxtoolbox.com/SPFRecordGenerator.aspx?domain={{ domain }}&prefill=true">
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_SPFRESULT_LINK_GENERATOR" }) }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
<li>
|
||||||
|
<a href="https://mxtoolbox.com/SuperTool.aspx?action=blacklist%3a{{ domain }}&run=toolpage">
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_SPFRESULT_LINK_BLACKLISTCHECK" }) }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 mb-4">
|
||||||
|
<h4>{{ translate({ ident: "D3_MAILCHECKER_DMARCRESULT_HL" }) }}</h4>
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_DMARCRESULT_DESC" }) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 mb-4">
|
||||||
|
<div class="row">
|
||||||
|
{% for domain, dmarc in dmarc_result %}
|
||||||
|
<div class="col-12 col-md-6 col-lg-3">
|
||||||
|
<div class="card mb-3">
|
||||||
|
<div class="card-header text-white bg-{{ oView.getDmarcStatusColor(dmarc) }}">
|
||||||
|
{{ domain }}
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<p>{{ translate({ ident: "D3_MAILCHECKER_DMARCRESULT_"|cat(dmarc.getStatus())|upper }) }}</p>
|
||||||
|
{% if dmarc.getRecord() %}
|
||||||
|
<p>
|
||||||
|
<label for="{{ domain }}_record">{{ translate({ ident: "D3_MAILCHECKER_RECORD", suffix: "COLON" }) }}</label>
|
||||||
|
<input type="text" id="{{ domain }}_record" value="{{ dmarc.getRecord() }}" style="width: 50%;" readonly disabled>
|
||||||
|
</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<h5>{{ translate({ ident: "D3_MAILCHECKER_DMARCRESULT_LINKS" }) }}</h5>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://mxtoolbox.com/SuperTool.aspx?action=dmarc%3a{{ domain }}&run=toolpage">
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_DMARCRESULT_LINK_ANALYSIS" }) }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://mxtoolbox.com/DMARCRecordGenerator.aspx?domain={{ domain }}&prefill=true">
|
||||||
|
{{ translate({ ident: "D3_MAILCHECKER_DMARCRESULT_LINK_GENERATOR" }) }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% include "bottomnaviitem.html.twig" %}
|
||||||
|
|
||||||
|
{% include "bottomitem.html.twig" %}
|
Loading…
Reference in New Issue
Block a user