* @link http://www.oxidmodule.com */ namespace D3\MailConfigChecker\Application\Controller\Admin; use Assert\Assert; use Assert\InvalidArgumentException; use D3\MailConfigChecker\Application\Model\Constants; use D3\MailConfigChecker\Application\Model\Exception\d3TranslatableLazyAssertionException; use Exception; use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController; use OxidEsales\Eshop\Application\Model\Shop; use OxidEsales\Eshop\Core\Email; use OxidEsales\Eshop\Core\Registry; class MailConfigCheck extends AdminDetailsController { protected $_sThisTemplate = '@'.Constants::OXID_MODULE_ID.'/admin/mailConfigCheck'; protected $testMailAddress = 'test@example.com'; public function render() { $this->checkDataAreSet(); $this->addTplParam('shop', Registry::getConfig()->getActiveShop()); return parent::render(); } protected function checkDataAreSet() { try { /** @var Shop $shop */ $shop = Registry::getConfig()->getActiveShop(); $lang = Registry::getLang(); Assert::lazy() ->setExceptionClass(d3TranslatableLazyAssertionException::class) ->that($shop->getFieldData('oxsmtp'), $lang->translateString('SHOP_MAIN_SMTPSERVER')) ->notBlank($lang->translateString('D3_MAILCHECKER_ASSERTIONS_NOTSET')) ->regex('/.*:(587|2525)$/m', $lang->translateString('D3_MAILCHECKER_ASSERTIONS_NOPORT')) ->that($shop->getFieldData('oxsmtpuser'), $lang->translateString('SHOP_MAIN_SMTPUSER')) ->notBlank($lang->translateString('D3_MAILCHECKER_ASSERTIONS_NOTSET')) ->that($shop->getFieldData('oxsmtppwd'), $lang->translateString('SHOP_MAIN_SMTPPASSWORD')) ->notBlank($lang->translateString('D3_MAILCHECKER_ASSERTIONS_NOTSET')) ->that($shop->getFieldData('oxinfoemail'), $lang->translateString('SHOP_MAIN_INFOEMAIL')) ->email($lang->translateString('D3_MAILCHECKER_ASSERTIONS_NOTSET')) ->that($shop->getFieldData('oxorderemail'), $lang->translateString('SHOP_MAIN_ORDEREMAIL')) ->email($lang->translateString('D3_MAILCHECKER_ASSERTIONS_NOTSET')) ->that($shop->getFieldData('oxowneremail'), $lang->translateString('SHOP_MAIN_OWNEREMAIL')) ->email($lang->translateString('D3_MAILCHECKER_ASSERTIONS_NOTSET')) ->verifyNow(); } catch (InvalidArgumentException $e) { Registry::getUtilsView()->addErrorToDisplay(nl2br($e->getMessage())); } } public function checkConfiguration() { $this->getCurrentMailer(); } protected function getCurrentMailer() { try { $shop = Registry::getConfig()->getActiveShop(); $mail = oxNew(Email::class); $mail->setRecipient($this->testMailAddress); $mail->setBody('.'); $mail->setFrom($shop->getFieldData('oxowneremail')); $mail->send(); $this->addTplParam('mailer', $mail->getMailer()); } catch (Exception $e) { Registry::getUtilsView()->addErrorToDisplay($e); } } }