function Transports::send
Overrides TransportInterface::send
File
-
vendor/
symfony/ mailer/ Transport/ Transports.php, line 47
Class
- Transports
- @author Fabien Potencier <fabien@symfony.com>
Namespace
Symfony\Component\Mailer\TransportCode
public function send(RawMessage $message, ?Envelope $envelope = null) : ?SentMessage {
/** @var Message $message */
if (RawMessage::class === $message::class || !$message->getHeaders()
->has('X-Transport')) {
return $this->default
->send($message, $envelope);
}
$headers = $message->getHeaders();
$transport = $headers->get('X-Transport')
->getBody();
$headers->remove('X-Transport');
if (!isset($this->transports[$transport])) {
throw new InvalidArgumentException(\sprintf('The "%s" transport does not exist (available transports: "%s").', $transport, implode('", "', array_keys($this->transports))));
}
try {
return $this->transports[$transport]
->send($message, $envelope);
} catch (\Throwable $e) {
$headers->addTextHeader('X-Transport', $transport);
throw $e;
}
}