Compare commits
28 Commits
Author | SHA1 | Date | |
---|---|---|---|
a314136829 | |||
3362941449 | |||
132d618a06 | |||
37839b269c | |||
c3649a9e24 | |||
a154a9a243 | |||
116001f0fe | |||
2af6727797 | |||
1d7a47c048 | |||
99744ada70 | |||
5352571623 | |||
d3e94b218a | |||
a119ae8687 | |||
860de39a79 | |||
d89b1a1848 | |||
32d3b178f8 | |||
8900201ee8 | |||
4e84b6940a | |||
ab3c6e20a6 | |||
46aeb7e6bd | |||
6bf8b0fb4c | |||
c414117143 | |||
541352a5c3 | |||
e59efe83e7 | |||
f882c1383e | |||
73c5211c6d | |||
4f6605afd3 | |||
86771ea2b1 |
@ -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,18 +25,19 @@ 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());
|
||||||
|
$this->addTplParam('recipient', $this->testMailAddress);
|
||||||
|
|
||||||
return parent::render();
|
return parent::render();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function checkDataAreSet()
|
protected function checkDataAreSet(): void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
/** @var Shop $shop */
|
/** @var Shop $shop */
|
||||||
@ -65,19 +65,40 @@ 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();
|
||||||
|
$config = Registry::getConfig();
|
||||||
|
|
||||||
$mail = oxNew(Email::class);
|
$mail = oxNew(Email::class);
|
||||||
$mail->setRecipient($this->testMailAddress);
|
$mail->setRecipient(
|
||||||
|
trim(Registry::getRequest()->getRequestEscapedParameter('recipient')) ?: $this->testMailAddress
|
||||||
|
);
|
||||||
$mail->setBody('.');
|
$mail->setBody('.');
|
||||||
|
$mail->setFrom($shop->getFieldData('oxowneremail'));
|
||||||
|
|
||||||
|
$currentDebug = $config->getConfigParam('iDebug');
|
||||||
|
$config->setConfigParam('iDebug', 6);
|
||||||
|
$mail->setSmtp();
|
||||||
|
|
||||||
|
ob_start();
|
||||||
$mail->send();
|
$mail->send();
|
||||||
|
$communication = ob_get_contents();
|
||||||
|
ob_end_clean();
|
||||||
|
|
||||||
|
$re = '/(^|\<br\>)(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\s)/m';
|
||||||
|
$subst = "$1";
|
||||||
|
$communication = preg_replace($re, $subst, $communication);
|
||||||
|
|
||||||
|
$config->setConfigParam('iDebug', $currentDebug);
|
||||||
$this->addTplParam('mailer', $mail->getMailer());
|
$this->addTplParam('mailer', $mail->getMailer());
|
||||||
|
$this->addTplParam('communication', $communication);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
Registry::getUtilsView()->addErrorToDisplay($e);
|
Registry::getUtilsView()->addErrorToDisplay($e);
|
||||||
}
|
}
|
||||||
|
@ -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,11 +120,11 @@ 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(
|
||||||
($this->smtp = new Net_SMTP($this->host, $this->port)),
|
($this->smtp = new Net_SMTP($this->host, $this->port, $_SERVER['HTTP_HOST'])),
|
||||||
Registry::getLang()->translateString('D3_MAILCHECKER_SMTPCHECK_INSTANCE')
|
Registry::getLang()->translateString('D3_MAILCHECKER_SMTPCHECK_INSTANCE')
|
||||||
)->isInstanceOf(
|
)->isInstanceOf(
|
||||||
Net_SMTP::class,
|
Net_SMTP::class,
|
||||||
@ -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'];
|
||||||
|
@ -16,7 +16,12 @@ declare(strict_types=1);
|
|||||||
namespace D3\MailConfigChecker\Application\Controller\Admin;
|
namespace D3\MailConfigChecker\Application\Controller\Admin;
|
||||||
|
|
||||||
use Assert\InvalidArgumentException;
|
use Assert\InvalidArgumentException;
|
||||||
|
use D3\MailAuthenticationCheck\DMARCCheck;
|
||||||
|
use D3\MailAuthenticationCheck\Model\DMARCResult;
|
||||||
|
use D3\MailConfigChecker\Application\Model\Constants;
|
||||||
|
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;
|
||||||
@ -27,15 +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();
|
||||||
return parent::render();
|
return parent::render();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function checkSpf()
|
protected function checkSpf(): void
|
||||||
{
|
{
|
||||||
$result = [];
|
$result = [];
|
||||||
$mailDomains = $this->getMailDomains();
|
$mailDomains = $this->getMailDomains();
|
||||||
@ -46,10 +52,24 @@ class SpfChecker extends AdminDetailsController
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->addTplParam('result', $result);
|
$this->addTplParam('spf_result', $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getMailDomains()
|
protected function checkDmarc(): void
|
||||||
|
{
|
||||||
|
$result = [];
|
||||||
|
$mailDomains = $this->getMailDomains();
|
||||||
|
array_walk(
|
||||||
|
$mailDomains,
|
||||||
|
function ($domain) use (&$result) {
|
||||||
|
$this->checkDmarcByDomain($domain, $result);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->addTplParam('dmarc_result', $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getMailDomains(): array
|
||||||
{
|
{
|
||||||
/** @var Shop $shop */
|
/** @var Shop $shop */
|
||||||
$shop = Registry::getConfig()->getActiveShop();
|
$shop = Registry::getConfig()->getActiveShop();
|
||||||
@ -61,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 '';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -81,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() :
|
||||||
@ -108,15 +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): void
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$check = new DMARCCheck(new DNSRecordGetter());
|
||||||
|
$query = new Query('', $domain);
|
||||||
|
$record = $check->getResult($query)->getRecord();
|
||||||
|
|
||||||
|
$status = match ( $record->getRejectPolicy()->getValue() ) {
|
||||||
|
DMARCResult::REJECT_QUARANTINE, DMARCResult::REJECT_REJECT => OxDmarcResult::SET,
|
||||||
|
DMARCResult::REJECT_NONE => OxDmarcResult::MISSING,
|
||||||
|
default => OxDmarcResult::ERROR,
|
||||||
|
};
|
||||||
|
|
||||||
|
$summarize[$domain] = oxNew( OxDmarcResult::class, $status, $record->getRawRecord());
|
||||||
|
} catch ( LogicException) {
|
||||||
|
$summarize[$domain] = oxNew( OxDmarcResult::class, OxDmarcResult::MISSING, '');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getDmarcStatusColor(OxDmarcResult $result): string
|
||||||
|
{
|
||||||
|
return match ( $result->getStatus() ) {
|
||||||
|
SpfResult::SET => 'success',
|
||||||
|
SpfResult::ERROR => 'warning',
|
||||||
|
default => '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';
|
||||||
|
}
|
42
Application/Model/DmarcResult.php
Normal file
42
Application/Model/DmarcResult.php
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
<?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 DmarcResult
|
||||||
|
{
|
||||||
|
public const SET = 'set';
|
||||||
|
public const MISSING = 'missing';
|
||||||
|
public const ERROR = 'error';
|
||||||
|
|
||||||
|
protected $status;
|
||||||
|
protected $record;
|
||||||
|
|
||||||
|
public function __construct(string $status, ?string $record = null)
|
||||||
|
{
|
||||||
|
$this->status = $status;
|
||||||
|
$this->record = $record;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getStatus(): string
|
||||||
|
{
|
||||||
|
return $this->status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRecord(): ?string
|
||||||
|
{
|
||||||
|
return $this->record;
|
||||||
|
}
|
||||||
|
}
|
@ -17,12 +17,12 @@ namespace D3\MailConfigChecker\Application\Model;
|
|||||||
|
|
||||||
class SpfResult
|
class SpfResult
|
||||||
{
|
{
|
||||||
public const SET = 'set';
|
public const SET = 'set';
|
||||||
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,12 +1,25 @@
|
|||||||
<?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',
|
||||||
'D3_TAB_MAILCHECKER_MODULEDESCRIPTION' => 'Beschreibung',
|
'D3_TAB_MAILCHECKER_MODULEDESCRIPTION' => 'Beschreibung',
|
||||||
'D3_TAB_MAILCHECKER_CONFIGCHECK' => 'Konfigurationsprüfung',
|
'D3_TAB_MAILCHECKER_CONFIGCHECK' => 'Konfigurationsprüfung',
|
||||||
'D3_TAB_MAILCHECKER_SMTPCHECK' => 'SMTP Check',
|
'D3_TAB_MAILCHECKER_SMTPCHECK' => 'SMTP Check',
|
||||||
'D3_TAB_MAILCHECKER_SPFCHECK' => 'SPF Check',
|
'D3_TAB_MAILCHECKER_SPFCHECK' => 'Authentisierung Check',
|
||||||
'D3_TAB_MAILCHECKER_TESTMAIL' => 'Testmail',
|
'D3_TAB_MAILCHECKER_TESTMAIL' => 'Testmail',
|
||||||
|
|
||||||
'D3_MAILCHECKER_INFO_1' => 'Dieses Modul kann Ihnen helfen, um Schwierigkeiten beim Versand von Mails oder bei nicht zugestellten Mails zu identifizieren. Gehen Sie bitte die folgenden Tabs durch. Nötige Nacharbeiten werden Ihnen dort angezeigt.',
|
'D3_MAILCHECKER_INFO_1' => 'Dieses Modul kann Ihnen helfen, um Schwierigkeiten beim Versand von Mails oder bei nicht zugestellten Mails zu identifizieren. Gehen Sie bitte die folgenden Tabs durch. Nötige Nacharbeiten werden Ihnen dort angezeigt.',
|
||||||
@ -20,10 +33,10 @@ return [
|
|||||||
'D3_MAILCHECKER_CFGCHECK_SHOPSEND_PHPMAILER' => 'PhpMailer',
|
'D3_MAILCHECKER_CFGCHECK_SHOPSEND_PHPMAILER' => 'PhpMailer',
|
||||||
'D3_MAILCHECKER_CFGCHECK_SHOPSEND_PHPMAILER_DESC' => 'Der Versand über den PhpMailer sollte dringend vermieden werden, da solche Mails meist als Spam eingestuft werden. Wenn Sie alle SMTP-Daten eingegeben haben, prüfen Sie mögliche Anmeldeprobleme im SMTP-Check.',
|
'D3_MAILCHECKER_CFGCHECK_SHOPSEND_PHPMAILER_DESC' => 'Der Versand über den PhpMailer sollte dringend vermieden werden, da solche Mails meist als Spam eingestuft werden. Wenn Sie alle SMTP-Daten eingegeben haben, prüfen Sie mögliche Anmeldeprobleme im SMTP-Check.',
|
||||||
'D3_MAILCHECKER_CFGCHECK_SHOPSEND_SMTP' => 'SMTP',
|
'D3_MAILCHECKER_CFGCHECK_SHOPSEND_SMTP' => 'SMTP',
|
||||||
'D3_MAILCHECKER_CFGCHECK_SHOPSEND_SMTP_DESC' => 'Alles in bester Ordnung. Bitte prüfen Sie noch die nötigen SPF-Einträge für Ihre Domain(s).',
|
'D3_MAILCHECKER_CFGCHECK_SHOPSEND_SMTP_DESC' => 'Alles in bester Ordnung. Bitte prüfen Sie noch die nötigen Einstellungen im Tab "Authorisierung Check" für Ihre Domain(s).',
|
||||||
'D3_MAILCHECKER_CFGCHECK_STARTCHECK' => 'Konfiguration testen',
|
'D3_MAILCHECKER_CFGCHECK_STARTCHECK' => 'Konfiguration testen',
|
||||||
|
|
||||||
'D3_MAILCHECKER_SMTPCHECK_DESC1' => 'Wenn trotz passend eingegebenen Daten kein Mailversand über SMTP erfolgt, kann hier der Anmeldeversuch am Postausgangsserver nachollzogen werden. Eventuell auftretende Meldungen werden gezeigt.',
|
'D3_MAILCHECKER_SMTPCHECK_DESC1' => 'Wenn trotz passend eingegebenen Daten kein Mailversand über SMTP erfolgt, kann hier der Anmeldeversuch am Postausgangsserver nachvollzogen werden. Eventuell auftretende Meldungen werden gezeigt.',
|
||||||
'D3_MAILCHECKER_SMTPCHECK_DESC2' => 'Auch neue Verbindungen können hier vorab getestet werden.',
|
'D3_MAILCHECKER_SMTPCHECK_DESC2' => 'Auch neue Verbindungen können hier vorab getestet werden.',
|
||||||
'D3_MAILCHECKER_SMTPCHECK_DESC3' => 'Zum Verbindungsaufbau werden diese Einstellungen verwendet. Diese können gern geändert werden. Sie werden nicht in den Shop zurückgespeichert. Der optionale Mailversand verschickt direkt an den SMTP Server und umgeht die Shoplogik.',
|
'D3_MAILCHECKER_SMTPCHECK_DESC3' => 'Zum Verbindungsaufbau werden diese Einstellungen verwendet. Diese können gern geändert werden. Sie werden nicht in den Shop zurückgespeichert. Der optionale Mailversand verschickt direkt an den SMTP Server und umgeht die Shoplogik.',
|
||||||
'D3_MAILCHECKER_SMTPCHECK_SENDER' => 'Absender',
|
'D3_MAILCHECKER_SMTPCHECK_SENDER' => 'Absender',
|
||||||
@ -41,6 +54,9 @@ return [
|
|||||||
'D3_MAILCHECKER_SMTPCHECK_NOTRANSMIT' => 'Datenübertragung nicht erfolgreich',
|
'D3_MAILCHECKER_SMTPCHECK_NOTRANSMIT' => 'Datenübertragung nicht erfolgreich',
|
||||||
'D3_MAILCHECKER_SMTPCHECK_SUCCESS' => 'Die SMTP-Kommunikation wurde erfolgreich abgeschlossen.',
|
'D3_MAILCHECKER_SMTPCHECK_SUCCESS' => 'Die SMTP-Kommunikation wurde erfolgreich abgeschlossen.',
|
||||||
|
|
||||||
|
'D3_MAILCHECKER_RECORD' => 'Eintrag',
|
||||||
|
|
||||||
|
'D3_MAILCHECKER_SPFRESULT_HL' => 'SPF (Herkunftsprüfung)',
|
||||||
'D3_MAILCHECKER_SPFRESULT_DESC' => 'Mit dem Sender Policy Framework (SPF) definiert der Domaininhaber, welcher Server E-Mails mit dem Domainabsender versenden darf. Diese Angabe wird vom Empfangsserver geprüft. Fehlt der SPF-Eintrag, werden E-Mails üblicherweise als Spam klassifiziert.',
|
'D3_MAILCHECKER_SPFRESULT_DESC' => 'Mit dem Sender Policy Framework (SPF) definiert der Domaininhaber, welcher Server E-Mails mit dem Domainabsender versenden darf. Diese Angabe wird vom Empfangsserver geprüft. Fehlt der SPF-Eintrag, werden E-Mails üblicherweise als Spam klassifiziert.',
|
||||||
'D3_MAILCHECKER_SPFRESULT_SET' => 'Es ist ein SPF-Eintrag gesetzt',
|
'D3_MAILCHECKER_SPFRESULT_SET' => 'Es ist ein SPF-Eintrag gesetzt',
|
||||||
'D3_MAILCHECKER_SPFRESULT_MISSING' => 'Es ist kein SPF-Eintrag gesetzt, dieser sollte dringend nachgetragen werden',
|
'D3_MAILCHECKER_SPFRESULT_MISSING' => 'Es ist kein SPF-Eintrag gesetzt, dieser sollte dringend nachgetragen werden',
|
||||||
@ -50,6 +66,15 @@ return [
|
|||||||
'D3_MAILCHECKER_SPFRESULT_LINK_GENERATOR' => 'SPF Generator',
|
'D3_MAILCHECKER_SPFRESULT_LINK_GENERATOR' => 'SPF Generator',
|
||||||
'D3_MAILCHECKER_SPFRESULT_LINK_BLACKLISTCHECK' => 'Blacklist Check',
|
'D3_MAILCHECKER_SPFRESULT_LINK_BLACKLISTCHECK' => 'Blacklist Check',
|
||||||
|
|
||||||
|
'D3_MAILCHECKER_DMARCRESULT_HL' => 'DMARC (Ablehnungsrichtlinien und Berichterstattung)',
|
||||||
|
'D3_MAILCHECKER_DMARCRESULT_DESC' => 'Der DMARC-Eintrag definiert, wie mit Mails umgegangen wird, bei denen die Authentisierungsprüfungen fehlgeschlagen sind. Dort können auch Mailadressen für Reporte angegeben werden.',
|
||||||
|
'D3_MAILCHECKER_DMARCRESULT_SET' => 'Es ist ein DMARC-Eintrag gesetzt, das Verhalten ist nicht auf "ignorieren" gestellt.',
|
||||||
|
'D3_MAILCHECKER_DMARCRESULT_MISSING' => 'Es ist kein DMARC-Eintrag gesetzt oder mit "ignorieren" konfiguriert. Dies sollte dringend geändert werden.',
|
||||||
|
'D3_MAILCHECKER_DMARCRESULT_ERROR' => 'Der DMARC-Eintrag kann nicht geprüft werden',
|
||||||
|
'D3_MAILCHECKER_DMARCRESULT_LINKS' => 'weiterführende Links',
|
||||||
|
'D3_MAILCHECKER_DMARCRESULT_LINK_ANALYSIS' => 'DMARC Analyse',
|
||||||
|
'D3_MAILCHECKER_DMARCRESULT_LINK_GENERATOR' => 'DMARC Generator',
|
||||||
|
|
||||||
'D3_MAILCHECKER_TESTMAIL_DESC' => 'Die Testmail wird auf identischem Weg geschickt, den auch alle regulären Mails aus dem Shop nehmen (z.B. Bestellbestätigungen, ...) und kann z.B. zur Headeranalyse dienen.',
|
'D3_MAILCHECKER_TESTMAIL_DESC' => 'Die Testmail wird auf identischem Weg geschickt, den auch alle regulären Mails aus dem Shop nehmen (z.B. Bestellbestätigungen, ...) und kann z.B. zur Headeranalyse dienen.',
|
||||||
'D3_MAILCHECKER_TESTMAIL_HEADERANALYSIS' => 'Email Header Analyzer',
|
'D3_MAILCHECKER_TESTMAIL_HEADERANALYSIS' => 'Email Header Analyzer',
|
||||||
'D3_MAILCHECKER_TESTMAIL_SUBJECT' => 'Betreff',
|
'D3_MAILCHECKER_TESTMAIL_SUBJECT' => 'Betreff',
|
||||||
|
@ -1,12 +1,25 @@
|
|||||||
<?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",
|
||||||
"D3_TAB_MAILCHECKER_MODULEDESCRIPTION" => "Description",
|
"D3_TAB_MAILCHECKER_MODULEDESCRIPTION" => "Description",
|
||||||
"D3_TAB_MAILCHECKER_CONFIGCHECK" => "Configuration check",
|
"D3_TAB_MAILCHECKER_CONFIGCHECK" => "Configuration check",
|
||||||
"D3_TAB_MAILCHECKER_SMTPCHECK" => "SMTP check",
|
"D3_TAB_MAILCHECKER_SMTPCHECK" => "SMTP check",
|
||||||
"D3_TAB_MAILCHECKER_SPFCHECK" => "SPF check",
|
"D3_TAB_MAILCHECKER_SPFCHECK" => "Authentication check",
|
||||||
"D3_TAB_MAILCHECKER_TESTMAIL" => "Test email",
|
"D3_TAB_MAILCHECKER_TESTMAIL" => "Test email",
|
||||||
"D3_MAILCHECKER_ASSERTIONS_FAILED" => "The following %d checks failed:",
|
"D3_MAILCHECKER_ASSERTIONS_FAILED" => "The following %d checks failed:",
|
||||||
"D3_MAILCHECKER_ASSERTIONS_NOTSET" => "is not (correctly) set",
|
"D3_MAILCHECKER_ASSERTIONS_NOTSET" => "is not (correctly) set",
|
||||||
@ -15,7 +28,7 @@ return [
|
|||||||
"D3_MAILCHECKER_CFGCHECK_SHOPSEND_PHPMAILER" => "PhpMailer",
|
"D3_MAILCHECKER_CFGCHECK_SHOPSEND_PHPMAILER" => "PhpMailer",
|
||||||
"D3_MAILCHECKER_CFGCHECK_SHOPSEND_PHPMAILER_DESC" => "Sending via PhpMailer should be avoided as such emails are usually classified as spam. Once you have entered all SMTP data, check possible login problems in the SMTP check.",
|
"D3_MAILCHECKER_CFGCHECK_SHOPSEND_PHPMAILER_DESC" => "Sending via PhpMailer should be avoided as such emails are usually classified as spam. Once you have entered all SMTP data, check possible login problems in the SMTP check.",
|
||||||
"D3_MAILCHECKER_CFGCHECK_SHOPSEND_SMTP" => "SMTP",
|
"D3_MAILCHECKER_CFGCHECK_SHOPSEND_SMTP" => "SMTP",
|
||||||
"D3_MAILCHECKER_CFGCHECK_SHOPSEND_SMTP_DESC" => "Everything is fine. Please check the necessary SPF entries for your domain(s).",
|
"D3_MAILCHECKER_CFGCHECK_SHOPSEND_SMTP_DESC" => "Everything is fine. Please check the necessary settings for your domain(s) in the \"Authentication Check\" tab .",
|
||||||
"D3_MAILCHECKER_CFGCHECK_STARTCHECK" => "Test configuration",
|
"D3_MAILCHECKER_CFGCHECK_STARTCHECK" => "Test configuration",
|
||||||
"D3_MAILCHECKER_SMTPCHECK_DESC1" => "If no mail is sent via SMTP despite the appropriate data entered, the attempt to log in to the outgoing mail server can be repeated here. Any messages that may occur are shown.",
|
"D3_MAILCHECKER_SMTPCHECK_DESC1" => "If no mail is sent via SMTP despite the appropriate data entered, the attempt to log in to the outgoing mail server can be repeated here. Any messages that may occur are shown.",
|
||||||
"D3_MAILCHECKER_SMTPCHECK_DESC2" => "New connections can also be tested here in advance.",
|
"D3_MAILCHECKER_SMTPCHECK_DESC2" => "New connections can also be tested here in advance.",
|
||||||
@ -34,6 +47,10 @@ return [
|
|||||||
"D3_MAILCHECKER_SMTPCHECK_TRANSMIT" => "Data transfer",
|
"D3_MAILCHECKER_SMTPCHECK_TRANSMIT" => "Data transfer",
|
||||||
"D3_MAILCHECKER_SMTPCHECK_NOTRANSMIT" => "Data transfer not successful",
|
"D3_MAILCHECKER_SMTPCHECK_NOTRANSMIT" => "Data transfer not successful",
|
||||||
"D3_MAILCHECKER_SMTPCHECK_SUCCESS" => "SMTP communication was completed successfully.",
|
"D3_MAILCHECKER_SMTPCHECK_SUCCESS" => "SMTP communication was completed successfully.",
|
||||||
|
|
||||||
|
'D3_MAILCHECKER_RECORD' => 'Record',
|
||||||
|
|
||||||
|
'D3_MAILCHECKER_SPFRESULT_HL' => 'SPF (Origin verification)',
|
||||||
"D3_MAILCHECKER_SPFRESULT_DESC" => "With the Sender Policy Framework (SPF), the domain owner defines which server is allowed to send emails with the domain sender. This information is checked by the receiving server. If the SPF entry is missing, emails are usually sent as ",
|
"D3_MAILCHECKER_SPFRESULT_DESC" => "With the Sender Policy Framework (SPF), the domain owner defines which server is allowed to send emails with the domain sender. This information is checked by the receiving server. If the SPF entry is missing, emails are usually sent as ",
|
||||||
"D3_MAILCHECKER_SPFRESULT_SET" => "An SPF entry is set",
|
"D3_MAILCHECKER_SPFRESULT_SET" => "An SPF entry is set",
|
||||||
"D3_MAILCHECKER_SPFRESULT_MISSING" => "There is no SPF entry set, this should be added urgently",
|
"D3_MAILCHECKER_SPFRESULT_MISSING" => "There is no SPF entry set, this should be added urgently",
|
||||||
@ -42,6 +59,16 @@ return [
|
|||||||
"D3_MAILCHECKER_SPFRESULT_LINK_ANALYSIS" => "SPF analysis",
|
"D3_MAILCHECKER_SPFRESULT_LINK_ANALYSIS" => "SPF analysis",
|
||||||
"D3_MAILCHECKER_SPFRESULT_LINK_GENERATOR" => "SPF generator",
|
"D3_MAILCHECKER_SPFRESULT_LINK_GENERATOR" => "SPF generator",
|
||||||
"D3_MAILCHECKER_SPFRESULT_LINK_BLACKLISTCHECK" => "Blacklist check",
|
"D3_MAILCHECKER_SPFRESULT_LINK_BLACKLISTCHECK" => "Blacklist check",
|
||||||
|
|
||||||
|
'D3_MAILCHECKER_DMARCRESULT_HL' => 'DMARC (Reject policy and reporting)',
|
||||||
|
'D3_MAILCHECKER_DMARCRESULT_DESC' => 'The DMARC entry defines how to deal with mails for which the authentication checks have failed. Mail addresses for reports can also be specified there.',
|
||||||
|
'D3_MAILCHECKER_DMARCRESULT_SET' => 'A DMARC entry is set, the behaviour is not set to ‘ignore’.',
|
||||||
|
'D3_MAILCHECKER_DMARCRESULT_MISSING' => 'No DMARC entry is set or configured with ‘ignore’. This should be changed urgently.',
|
||||||
|
'D3_MAILCHECKER_DMARCRESULT_ERROR' => 'The DMARC record cannot be checked',
|
||||||
|
'D3_MAILCHECKER_DMARCRESULT_LINKS' => 'Related Links',
|
||||||
|
'D3_MAILCHECKER_DMARCRESULT_LINK_ANALYSIS' => 'DMARC analysis',
|
||||||
|
'D3_MAILCHECKER_DMARCRESULT_LINK_GENERATOR' => 'DMARC generator',
|
||||||
|
|
||||||
"D3_MAILCHECKER_TESTMAIL_DESC" => "The test email is sent in the same way as all regular emails from the shop (e.g..B. order confirmations, ...) and can ",
|
"D3_MAILCHECKER_TESTMAIL_DESC" => "The test email is sent in the same way as all regular emails from the shop (e.g..B. order confirmations, ...) and can ",
|
||||||
"D3_MAILCHECKER_TESTMAIL_HEADERANALYSIS" => "Email Header Analyzer",
|
"D3_MAILCHECKER_TESTMAIL_HEADERANALYSIS" => "Email Header Analyzer",
|
||||||
"D3_MAILCHECKER_TESTMAIL_SUBJECT" => "Regarding",
|
"D3_MAILCHECKER_TESTMAIL_SUBJECT" => "Regarding",
|
||||||
|
47
CHANGELOG.md
47
CHANGELOG.md
@ -4,27 +4,44 @@ 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/1.1.0.0...rel_1.x)
|
## [Unreleased](https://git.d3data.de/D3Public/MyModule/compare/3.0.1.0...rel_3.x)
|
||||||
|
|
||||||
## [1.1.0.0](https://git.d3data.de/D3Public/MyModule/compare/1.0.0.0...1.1.0.0) - 2022-07-26
|
## [3.0.1.0](https://git.d3data.de/D3Public/MailConfigChecker/compare/3.0.0.0...3.0.1.0) - 2024-07-10
|
||||||
### Added
|
### Added
|
||||||
- another feature
|
- 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
|
### Changed
|
||||||
- changed old code
|
- SMTP check uses shop domain for EHLO
|
||||||
|
|
||||||
### Deprecated
|
## [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
|
### Removed
|
||||||
- ...
|
- OXID 6.x support
|
||||||
|
|
||||||
### Fixed
|
## [2.1.1.0](https://git.d3data.de/D3Public/MailConfigChecker/compare/2.1.0.0...2.1.1.0) - 2024-07-10
|
||||||
- ...
|
|
||||||
|
|
||||||
### Security
|
|
||||||
- ...
|
|
||||||
|
|
||||||
## [1.0.0.0](https://git.d3data.de/D3Public/MyModule/releases/tag/1.0.0.0) - 2022-07-25
|
|
||||||
### Added
|
### Added
|
||||||
- implemented features
|
- 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
|
||||||
|
|
||||||
|
## [2.1.0.0](https://git.d3data.de/D3Public/MailConfigChecker/compare/2.0.0.1...2.1.0.0) - 2024-06-05
|
||||||
|
### Added
|
||||||
|
- check for DMARC DNS record
|
||||||
|
|
||||||
|
## [2.0.0.1](https://git.d3data.de/D3Public/MailConfigChecker/compare/2.0.0.0...2.0.0.1) - 2024-04-11
|
||||||
|
### Fixed
|
||||||
|
- MailConfigCheck need a valid "from" mailadress to check smtp correctly
|
||||||
|
|
||||||
|
## [2.0.0.0](https://git.d3data.de/D3Public/MailConfigChecker/releases/tag/2.0.0.0) - 2023-12-13
|
||||||
|
### Added
|
||||||
|
- Checking the mail configuration
|
||||||
|
- Checking the transmission path used
|
||||||
|
- SMTP connection analysis
|
||||||
|
- SPF header check
|
||||||
|
- Test mail dispatch
|
29
README.en.md
29
README.en.md
@ -1,9 +1,7 @@
|
|||||||
[![deutsche Version](https://logos.oxidmodule.com/de2_xs.svg)](README.md)
|
[![deutsche Version](https://logos.oxidmodule.com/de2_xs.svg)](README.md)
|
||||||
[![english version](https://logos.oxidmodule.com/en2_xs.svg)](README.en.md)
|
[![english version](https://logos.oxidmodule.com/en2_xs.svg)](README.en.md)
|
||||||
|
|
||||||
# D³ Modulname for OXID eShop
|
# D³ Mail Configuration Check for OXID eShop
|
||||||
|
|
||||||
Insert short description here
|
|
||||||
|
|
||||||
## Table of content
|
## Table of content
|
||||||
|
|
||||||
@ -12,35 +10,22 @@ Insert short description here
|
|||||||
- [Changelog](#changelog)
|
- [Changelog](#changelog)
|
||||||
- [Contributing](#contributing)
|
- [Contributing](#contributing)
|
||||||
- [License](#license)
|
- [License](#license)
|
||||||
- [Further licences and terms of use](#further-licences-and-terms-of-use)
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
This package requires an OXID eShop installed with Composer in a version defined in the [composer.json](composer.json).
|
This package requires an OXID eShop installed with Composer in a version defined in the [composer.json](composer.json).
|
||||||
|
|
||||||
Please enter the following section in the `composer.json` of your project:
|
|
||||||
|
|
||||||
```
|
|
||||||
"extra": {
|
|
||||||
optional instructions from 3rd party packages (e.g. patch or symlink instructions)
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Open a command line and navigate to the root directory of the shop (parent directory of source and vendor). Execute the following commands. Adapt the path details to your installation environment.
|
Open a command line and navigate to the root directory of the shop (parent directory of source and vendor). Execute the following commands. Adapt the path details to your installation environment.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
composer require d3/modulename:^2.0
|
composer require d3/mailconfigchecker:^2.0
|
||||||
|
|
||||||
./vendor/bin/oe-eshop-db_migrate migrations:migrate modulemetadataid
|
|
||||||
```
|
```
|
||||||
|
|
||||||
If necessary, please confirm that you allow `package-name` to execute code.
|
|
||||||
|
|
||||||
Activate the module in Shopadmin under "Extensions -> Modules".
|
Activate the module in Shopadmin under "Extensions -> Modules".
|
||||||
|
|
||||||
## How to use
|
## How to use
|
||||||
|
|
||||||
...
|
Call up the pages in the backend of the shop under "Service -> Email checking".
|
||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
@ -57,7 +42,7 @@ If you have a suggestion that would make this better, please fork the repo and c
|
|||||||
- Open a Pull Request
|
- Open a Pull Request
|
||||||
|
|
||||||
## License
|
## License
|
||||||
(status: 2022-07-30)
|
(status: 2023-12-13)
|
||||||
|
|
||||||
Distributed under the GPLv3 license.
|
Distributed under the GPLv3 license.
|
||||||
|
|
||||||
@ -67,8 +52,4 @@ Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
|
|||||||
This software is distributed under the GNU GENERAL PUBLIC LICENSE version 3.
|
This software is distributed under the GNU GENERAL PUBLIC LICENSE version 3.
|
||||||
```
|
```
|
||||||
|
|
||||||
For full copyright and licensing information, please see the [LICENSE](LICENSE.md) file distributed with this source code.
|
For full copyright and licensing information, please see the [LICENSE](LICENSE.md) file distributed with this source code.
|
||||||
|
|
||||||
## Further licences and terms of use
|
|
||||||
|
|
||||||
...
|
|
27
README.md
27
README.md
@ -1,9 +1,7 @@
|
|||||||
[![deutsche Version](https://logos.oxidmodule.com/de2_xs.svg)](README.md)
|
[![deutsche Version](https://logos.oxidmodule.com/de2_xs.svg)](README.md)
|
||||||
[![english version](https://logos.oxidmodule.com/en2_xs.svg)](README.en.md)
|
[![english version](https://logos.oxidmodule.com/en2_xs.svg)](README.en.md)
|
||||||
|
|
||||||
# D³ Modulname für OXID eShop
|
# D³ E-Mail Konfigurationsprüfung für OXID eShop
|
||||||
|
|
||||||
Hier Kurzbeschreibung einfügen
|
|
||||||
|
|
||||||
## Inhaltsverzeichnis
|
## Inhaltsverzeichnis
|
||||||
|
|
||||||
@ -12,36 +10,23 @@ Hier Kurzbeschreibung einfügen
|
|||||||
- [Changelog](#changelog)
|
- [Changelog](#changelog)
|
||||||
- [Beitragen](#beitragen)
|
- [Beitragen](#beitragen)
|
||||||
- [Lizenz](#lizenz)
|
- [Lizenz](#lizenz)
|
||||||
- [weitere Lizenzen und Nutzungsbedingungen](#weitere-lizenzen-und-nutzungsbedingungen)
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
Dieses Paket erfordert einen mit Composer installierten OXID eShop in einer in der [composer.json](composer.json) definierten Version.
|
Dieses Paket erfordert einen mit Composer installierten OXID eShop in einer in der [composer.json](composer.json) definierten Version.
|
||||||
|
|
||||||
Bitte tragen Sie den folgenden Abschnitt in die `composer.json` Ihres Projektes ein:
|
|
||||||
|
|
||||||
```
|
|
||||||
"extra": {
|
|
||||||
optionale Anweisungen von 3rd-Party-Packages (z.B. Patch- oder Symlink-Anweisungen)
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Öffnen Sie eine Kommandozeile und navigieren Sie zum Stammverzeichnis des Shops (Elternverzeichnis von source und vendor). Führen Sie die folgenden Befehle aus. Passen Sie die Pfadangaben an Ihre Installationsumgebung an.
|
Öffnen Sie eine Kommandozeile und navigieren Sie zum Stammverzeichnis des Shops (Elternverzeichnis von source und vendor). Führen Sie die folgenden Befehle aus. Passen Sie die Pfadangaben an Ihre Installationsumgebung an.
|
||||||
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
composer require d3/modulename:^2.0
|
composer require d3/mailconfigchecker:^3.0
|
||||||
|
|
||||||
./vendor/bin/oe-eshop-db_migrate migrations:migrate modulemetadataid
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Sofern nötig, bestätigen Sie bitte, dass Sie `package-name` erlauben, Code auszuführen.
|
|
||||||
|
|
||||||
Aktivieren Sie das Modul im Shopadmin unter "Erweiterungen -> Module".
|
Aktivieren Sie das Modul im Shopadmin unter "Erweiterungen -> Module".
|
||||||
|
|
||||||
## Verwendung
|
## Verwendung
|
||||||
|
|
||||||
...
|
Rufen Sie die Seiten im Backend des Shops unter "Service -> E-Mail Prüfung" auf.
|
||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
@ -58,7 +43,7 @@ Wenn Sie eine Verbesserungsvorschlag haben, legen Sie einen Fork des Repositorie
|
|||||||
- Öffnen Sie einen Pull Request
|
- Öffnen Sie einen Pull Request
|
||||||
|
|
||||||
## Lizenz
|
## Lizenz
|
||||||
(Stand: 06.05.2021)
|
(Stand: 14.12.2023)
|
||||||
|
|
||||||
Vertrieben unter der GPLv3 Lizenz.
|
Vertrieben unter der GPLv3 Lizenz.
|
||||||
|
|
||||||
@ -69,7 +54,3 @@ Diese Software wird unter der GNU GENERAL PUBLIC LICENSE Version 3 vertrieben.
|
|||||||
```
|
```
|
||||||
|
|
||||||
Die vollständigen Copyright- und Lizenzinformationen entnehmen Sie bitte der [LICENSE](LICENSE.md)-Datei, die mit diesem Quellcode verteilt wurde.
|
Die vollständigen Copyright- und Lizenzinformationen entnehmen Sie bitte der [LICENSE](LICENSE.md)-Datei, die mit diesem Quellcode verteilt wurde.
|
||||||
|
|
||||||
## weitere Lizenzen und Nutzungsbedingungen
|
|
||||||
|
|
||||||
...
|
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
@ -12,6 +12,7 @@
|
|||||||
"SMTP",
|
"SMTP",
|
||||||
"phpMailer",
|
"phpMailer",
|
||||||
"SPF",
|
"SPF",
|
||||||
|
"DMARC",
|
||||||
"testing"
|
"testing"
|
||||||
],
|
],
|
||||||
"authors": [
|
"authors": [
|
||||||
@ -30,33 +31,22 @@
|
|||||||
"GPL-3.0-or-later"
|
"GPL-3.0-or-later"
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=7.3",
|
"php": "^8",
|
||||||
"oxid-esales/oxideshop-ce": "6.8 - 6.14",
|
"oxid-esales/oxideshop-ce": "7.0 - 7.1",
|
||||||
"pear/net_smtp": "^1.11",
|
"pear/net_smtp": "^1.11",
|
||||||
"mika56/spfcheck": "^1.1.7|^2.1.1",
|
"mika56/spfcheck": "^2.1.1",
|
||||||
|
"d3/mailauthenticationcheck": "^0.1.0",
|
||||||
"beberlei/assert": "^3.3"
|
"beberlei/assert": "^3.3"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"php": "^7.4",
|
"php": "^8",
|
||||||
"phpunit/phpunit" : "^9.5",
|
|
||||||
"friendsofphp/php-cs-fixer": "^3.9",
|
"friendsofphp/php-cs-fixer": "^3.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' => '1.0.0.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,38 +0,0 @@
|
|||||||
# Arbeiten mit [Doctrine Migrations](https://www.doctrine-project.org/projects/doctrine-migrations/en/3.6/reference/introduction.html)
|
|
||||||
|
|
||||||
Migrations bilden die Veränderung der Datenbankstruktur in programmierter Form ab. Jede Strukturänderung wird in einer einzelnen (jeweils neuen) Migrationsdatei abgelegt, die Teil des Moduls ist.
|
|
||||||
|
|
||||||
Passe die `migrations.yml` an Dein Modul an.
|
|
||||||
|
|
||||||
## Erstellen eines Skeletons für die erste oder zusätzliche Migrationen
|
|
||||||
|
|
||||||
```
|
|
||||||
./vendor/bin/oe-eshop-doctrine_migration migrations:generate d3moduleid
|
|
||||||
```
|
|
||||||
|
|
||||||
Arbeite die angelegte Datei entsprechend Deinen Anforderungen um.
|
|
||||||
|
|
||||||
## Ausführen der noch nicht ausgeführten Migrations
|
|
||||||
|
|
||||||
Doctrine überwacht selbst, welche Migrationen schon ausgeführt wurden und verhindert damit mehrfache Ausführungen der selben Migration.
|
|
||||||
|
|
||||||
Im OXID-Shop werden Migrations mit folgendem Befehl ausgeführt:
|
|
||||||
|
|
||||||
```
|
|
||||||
./vendor/bin/oe-eshop-db_migrate migrations:migrate
|
|
||||||
```
|
|
||||||
|
|
||||||
Als Argument kann noch die Suite mitgegeben werden, wenn nur bestimmte Migrations ausgeführt werden sollen. Mögliche Angaben sind:
|
|
||||||
|
|
||||||
- CE - für alle CE-Migrations
|
|
||||||
- PE - für alle PE-Migrations
|
|
||||||
- EE - für alle EE-Migrations
|
|
||||||
- PR - für alle Projekt-Migrations
|
|
||||||
- ModuleId - für alle Migrations des jeweiligen Moduls
|
|
||||||
- ohne Angabe - werden die Migrations aller Suiten nacheinander ausgeführt
|
|
||||||
|
|
||||||
## Abweichungen zwischen Doctrine Migrations und dem OXID Migration Wrapper
|
|
||||||
|
|
||||||
In den originalen Doctrine Migrations können keine Suiten angegeben werden. Dafür gibt es die Möglichkeit, die Richtung (up / down) und eine Zielversion anzugeben.
|
|
||||||
|
|
||||||
Bei OXID können Migrations ausschließlich aufwärts (up) und immer fix bis zur aktuellsten Version ausgeführt werden.
|
|
@ -1,4 +0,0 @@
|
|||||||
name: D3 module name
|
|
||||||
migrations_namespace: D3\ThisModule\Migrations
|
|
||||||
table_name: d3migrations_modulename
|
|
||||||
migrations_directory: data
|
|
@ -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,10 +1,18 @@
|
|||||||
[{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 {
|
||||||
cursor: default;
|
cursor: default;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.communicationoutput {
|
||||||
|
background-color: black;
|
||||||
|
color: white;
|
||||||
|
max-height: 500px;
|
||||||
|
overflow: auto;
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
[{assign var="readonly" value="readonly disabled"}]
|
[{assign var="readonly" value="readonly disabled"}]
|
||||||
@ -52,11 +60,16 @@
|
|||||||
[{oxmultilang ident="D3_MAILCHECKER_CFGCHECK_SHOPSEND_SMTP_DESC"}]
|
[{oxmultilang ident="D3_MAILCHECKER_CFGCHECK_SHOPSEND_SMTP_DESC"}]
|
||||||
[{/if}]
|
[{/if}]
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="col-12 communicationoutput">
|
||||||
|
[{$communication}]
|
||||||
|
</div>
|
||||||
[{else}]
|
[{else}]
|
||||||
<form name="myedit" id="myedit" action="[{$oViewConf->getSelfLink()}]" method="post">
|
<form name="myedit" id="myedit" action="[{$oViewConf->getSelfLink()}]" method="post">
|
||||||
[{$oViewConf->getHiddenSid()}]
|
[{$oViewConf->getHiddenSid()}]
|
||||||
<input type="hidden" name="cl" value="[{$oViewConf->getActiveClassName()}]">
|
<input type="hidden" name="cl" value="[{$oViewConf->getActiveClassName()}]">
|
||||||
<input type="hidden" name="fnc" value="checkConfiguration">
|
<input type="hidden" name="fnc" value="checkConfiguration">
|
||||||
|
<input type="hidden" name="recipient" value="[{$recipient}]">
|
||||||
<button type="submit" class="btn btn-primary">[{oxmultilang ident="D3_MAILCHECKER_CFGCHECK_STARTCHECK"}]</button>
|
<button type="submit" class="btn btn-primary">[{oxmultilang ident="D3_MAILCHECKER_CFGCHECK_STARTCHECK"}]</button>
|
||||||
</form>
|
</form>
|
||||||
[{/if}]
|
[{/if}]
|
@ -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()}]
|
||||||
@ -10,15 +10,16 @@
|
|||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 col-md-10 col-lg-8 mb-4">
|
<div class="col-12 mb-4">
|
||||||
|
<h4>[{oxmultilang ident="D3_MAILCHECKER_SPFRESULT_HL"}]</h4>
|
||||||
[{oxmultilang ident="D3_MAILCHECKER_SPFRESULT_DESC"}]
|
[{oxmultilang ident="D3_MAILCHECKER_SPFRESULT_DESC"}]
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 col-md-10 col-lg-8 mb-4">
|
<div class="col-12 mb-4">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
[{foreach from=$result key="domain" item="spf"}]
|
[{foreach from=$spf_result key="domain" item="spf"}]
|
||||||
<div class="col-12 col-md-6 col-lg-4">
|
<div class="col-12 col-md-6 col-lg-3">
|
||||||
<div class="card mb-3">
|
<div class="card mb-3">
|
||||||
<div class="card-header text-white bg-[{$oView->getSpfStatusColor($spf)}]">
|
<div class="card-header text-white bg-[{$oView->getSpfStatusColor($spf)}]">
|
||||||
[{$domain}]
|
[{$domain}]
|
||||||
@ -27,8 +28,8 @@
|
|||||||
<p>[{oxmultilang ident="D3_MAILCHECKER_SPFRESULT_"|cat:$spf->getStatus()|upper}]</p>
|
<p>[{oxmultilang ident="D3_MAILCHECKER_SPFRESULT_"|cat:$spf->getStatus()|upper}]</p>
|
||||||
[{if $spf->getRecord()}]
|
[{if $spf->getRecord()}]
|
||||||
<p>
|
<p>
|
||||||
<label for="[{$domain}]_record">Eintrag:</label>
|
<label for="[{$domain}]_record">[{oxmultilang ident="D3_MAILCHECKER_RECORD" suffix="COLON"}]</label>
|
||||||
<input type="text" id="[{$domain}]_record" value="[{$spf->getRecord()}]" readonly disabled>
|
<input type="text" id="[{$domain}]_record" value="[{$spf->getRecord()}]" style="width: 50%;" readonly disabled>
|
||||||
</p>
|
</p>
|
||||||
[{/if}]
|
[{/if}]
|
||||||
|
|
||||||
@ -45,7 +46,6 @@
|
|||||||
<a href="https://mxtoolbox.com/SPFRecordGenerator.aspx?domain=[{$domain}]&prefill=true">
|
<a href="https://mxtoolbox.com/SPFRecordGenerator.aspx?domain=[{$domain}]&prefill=true">
|
||||||
[{oxmultilang ident="D3_MAILCHECKER_SPFRESULT_LINK_GENERATOR"}]
|
[{oxmultilang ident="D3_MAILCHECKER_SPFRESULT_LINK_GENERATOR"}]
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
</li>
|
</li>
|
||||||
[{/if}]
|
[{/if}]
|
||||||
<li>
|
<li>
|
||||||
@ -62,6 +62,51 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 mb-4">
|
||||||
|
<h4>[{oxmultilang ident="D3_MAILCHECKER_DMARCRESULT_HL"}]</h4>
|
||||||
|
[{oxmultilang ident="D3_MAILCHECKER_DMARCRESULT_DESC"}]
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 mb-4">
|
||||||
|
<div class="row">
|
||||||
|
[{foreach from=$dmarc_result key="domain" item="dmarc"}]
|
||||||
|
<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>[{oxmultilang ident="D3_MAILCHECKER_DMARCRESULT_"|cat:$dmarc->getStatus()|upper}]</p>
|
||||||
|
[{if $dmarc->getRecord()}]
|
||||||
|
<p>
|
||||||
|
<label for="[{$domain}]_record">[{oxmultilang ident="D3_MAILCHECKER_RECORD" suffix="COLON"}]</label>
|
||||||
|
<input type="text" id="[{$domain}]_record" value="[{$dmarc->getRecord()}]" style="width: 50%;" readonly disabled>
|
||||||
|
</p>
|
||||||
|
[{/if}]
|
||||||
|
|
||||||
|
<h5>[{oxmultilang ident="D3_MAILCHECKER_DMARCRESULT_LINKS"}]</h5>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://mxtoolbox.com/SuperTool.aspx?action=dmarc%3a[{$domain}]&run=toolpage">
|
||||||
|
[{oxmultilang ident="D3_MAILCHECKER_DMARCRESULT_LINK_ANALYSIS"}]
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://mxtoolbox.com/DMARCRecordGenerator.aspx?domain=[{$domain}]&prefill=true">
|
||||||
|
[{oxmultilang ident="D3_MAILCHECKER_DMARCRESULT_LINK_GENERATOR"}]
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
[{/foreach}]
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
[{include file="bottomnaviitem.tpl"}]
|
[{include file="bottomnaviitem.tpl"}]
|
||||||
|
|
||||||
[{include file="bottomitem.tpl"}]
|
[{include file="bottomitem.tpl"}]
|
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