12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Component\Mailer\Transport\Smtp;
- use Symfony\Component\Mailer\Transport\AbstractTransportFactory;
- use Symfony\Component\Mailer\Transport\Dsn;
- use Symfony\Component\Mailer\Transport\Smtp\Stream\SocketStream;
- use Symfony\Component\Mailer\Transport\TransportInterface;
- /**
- * @author Konstantin Myakshin <molodchick@gmail.com>
- */
- final class EsmtpTransportFactory extends AbstractTransportFactory
- {
- public function create(Dsn $dsn): TransportInterface
- {
- $tls = 'smtps' === $dsn->getScheme() ? true : null;
- $port = $dsn->getPort(0);
- $host = $dsn->getHost();
- $transport = new EsmtpTransport($host, $port, $tls, $this->dispatcher, $this->logger);
- if ('' !== $dsn->getOption('verify_peer') && !filter_var($dsn->getOption('verify_peer', true), \FILTER_VALIDATE_BOOLEAN)) {
- /** @var SocketStream $stream */
- $stream = $transport->getStream();
- $streamOptions = $stream->getStreamOptions();
- $streamOptions['ssl']['verify_peer'] = false;
- $streamOptions['ssl']['verify_peer_name'] = false;
- $stream->setStreamOptions($streamOptions);
- }
- if ($user = $dsn->getUser()) {
- $transport->setUsername($user);
- }
- if ($password = $dsn->getPassword()) {
- $transport->setPassword($password);
- }
- if (null !== ($localDomain = $dsn->getOption('local_domain'))) {
- $transport->setLocalDomain($localDomain);
- }
- if (null !== ($restartThreshold = $dsn->getOption('restart_threshold'))) {
- $transport->setRestartThreshold((int) $restartThreshold, (int) $dsn->getOption('restart_threshold_sleep', 0));
- }
- if (null !== ($pingThreshold = $dsn->getOption('ping_threshold'))) {
- $transport->setPingThreshold((int) $pingThreshold);
- }
- return $transport;
- }
- protected function getSupportedSchemes(): array
- {
- return ['smtp', 'smtps'];
- }
- }
|