Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace Mautic\EmailBundle\Mailer\Transport; | |
use Symfony\Component\Mailer\Exception\UnsupportedSchemeException; | |
use Symfony\Component\Mailer\Transport as SymfonyTransportFactory; | |
use Symfony\Component\Mailer\Transport\Dsn; | |
use Symfony\Component\Mailer\Transport\TransportInterface; | |
use Symfony\Component\Mailer\Transport\Transports; | |
class TransportFactory | |
{ | |
public function __construct( | |
private SymfonyTransportFactory $transportFactory | |
) { | |
} | |
/** | |
* @param array<string, string> $dsns | |
*/ | |
public function fromStrings(array $dsns): Transports | |
{ | |
$transports = []; | |
foreach ($dsns as $name => $dsn) { | |
$transports[$name] = $this->fromString($dsn); | |
} | |
return new Transports($transports); | |
} | |
public function fromString(string $dsn): TransportInterface | |
{ | |
try { | |
return $this->transportFactory->fromString($dsn); | |
} catch (UnsupportedSchemeException) { | |
return new InvalidTransport(); | |
} | |
} | |
public function fromDsnObject(Dsn $dsn): TransportInterface | |
{ | |
return $this->transportFactory->fromDsnObject($dsn); | |
} | |
} | |