injectableFactory->createWithBinding( Sender::class, BindingContainerBuilder ::create() ->bindInstance(SendingAccountProvider::class, $this->accountProvider) ->build() ); } /** * Create a builder. */ public function create(): Sender { return $this->createSender(); } /** * With parameters. * * @param SenderParams|array $params */ public function withParams($params): Sender { return $this->createSender()->withParams($params); } /** * With specific SMTP parameters. * * @param SmtpParams|array $params */ public function withSmtpParams($params): Sender { return $this->createSender()->withSmtpParams($params); } /** * With specific attachments. * * @param iterable $attachmentList */ public function withAttachments(iterable $attachmentList): Sender { return $this->createSender()->withAttachments($attachmentList); } /** * With envelope options. * * @param array $options */ public function withEnvelopeOptions(array $options): Sender { return $this->createSender()->withEnvelopeOptions($options); } /** * Set a message instance. */ public function withMessage(Message $message): Sender { return $this->createSender()->withMessage($message); } /** * Whether system SMTP is configured. */ public function hasSystemSmtp(): bool { if ($this->config->get('smtpServer')) { return true; } if ($this->accountProvider->getSystem()) { return true; } return false; } /** * Send an email. * * @throws Exceptions\SendingError */ public function send(Email $email): void { $this->createSender()->send($email); } /** * Generate a message ID. */ static public function generateMessageId(Email $email): string { return Sender::generateMessageId($email); } }