public function __construct(TransportInterface
$transport, MessageBusInterface
$bus = null, EventDispatcherInterface
$dispatcher = null
) { $this->transport =
$transport;
$this->bus =
$bus;
$this->dispatcher =
$dispatcher;
} public function send(RawMessage
$message, Envelope
$envelope = null
): void
{ if (null ===
$this->bus
) { $this->transport->
send($message,
$envelope);
return;
} $stamps =
[];
if (null !==
$this->dispatcher
) { // The dispatched event here has `queued` set to `true`; the goal is NOT to render the message, but to let
// listeners do something before a message is sent to the queue.
// We are using a cloned message as we still want to dispatch the **original** message, not the one modified by listeners.
// That's because the listeners will run again when the email is sent via Messenger by the transport (see `AbstractTransport`).
// Listeners should act depending on the `$queued` argument of the `MessageEvent` instance.