MailConfigChecker/Application/Controller/Admin/SmtpChecker.php

110 lines
3.0 KiB
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);
namespace D3\SmtpChecker\Application\Controller\Admin;
use Assert\Assert;
use Assert\InvalidArgumentException;
use Net_SMTP;
use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController;
use OxidEsales\Eshop\Application\Model\Shop;
use OxidEsales\Eshop\Core\Registry;
use PEAR;
class SmtpChecker extends AdminDetailsController
{
protected bool $debug = true;
protected string $host;
protected Net_SMTP $smtp;
public function __construct()
{
parent::__construct();
/** @var Shop $activeShop */
$activeShop = Registry::getConfig()->getActiveShop();
$this->host = Registry::getRequest()->getRequestEscapedParameter('') ?? $activeShop->getFieldData('oxsmtp');
$this->checkDataAreSet();
$this->hostIsAvailable();
/*
//$host = 'cloud1-vm279.de-nserver.de:587';
$from = 'mail@ds.data-develop.de';
$rcpt = array('test@ds.data-develop.de', 'test@daniel-seifert.com', 'recipient2@example.com');
//$rcpt = array('test@ds.data-develop.de');
$rcpt = array('test@daniel-seifert.com');
$subj = "Subject: Test Message\n";
$body = "Body Line 1\nBody Line 2";
if ( PEAR::isError( $e = $smtp->connect())) {
dumpvar(__METHOD__.__LINE__.PHP_EOL);
die($e->getMessage() . "\n");
}
if ( PEAR::isError( $smtp->mailFrom( $from))) {
die("Unable to set sender to $from\n");
}
foreach ($rcpt as $to) {
dumpvar($to.PHP_EOL);
if ( PEAR::isError( $res = $smtp->rcptTo( $to))) {
die("Unable to add recipient $to: " . $res->getMessage() . "\n");
}
}
/* Set the body of the message. */
/*
if ( PEAR::isError( $res = $smtp->data( $subj . "\r\n" . $body))) {
dumpvar($res->getMessage());
die("Unable to send data\n");
}
/* Disconnect from the SMTP server. */
/*
$smtp->disconnect();
*/
}
protected function checkDataAreSet()
{
}
/**
* @throws InvalidArgumentException
* @return void
*/
protected function hostIsAvailable()
{
$this->host = 'test.example.dev';
Assert::that(( $this->smtp = new Net_SMTP( $this->host ) ))->true('Unable to instantiate SMTP object');
$this->smtp->setDebug($this->debug);
}
protected function foo()
{
PEAR::isError( $e = $this->smtp->connect());
dumpvar(get_class($e));
die();
Assert::that(PEAR::isError( $e = $this->smtp->connect()))->false($e->getMessage());
{
dumpvar(__METHOD__.__LINE__.PHP_EOL);
die($e->getMessage() . "\n");
}
}
}