/** * @param Message $message * @param array $emails * @return int */ public function send(Message $message, array $emails) : int { $separator = sprintf('--MIME-SEPARATOR-%1$s', microtime(false)); $messageMime = explode($separator, $message->getCompiled($separator)); $sendMail = mail(implode(",", $emails), $message->getSubject(), $messageMime[1], $messageMime[0]); return $sendMail ? count($emails) : 0; }
/** * Send email message(s) * * @param Message $message * @param array $emails * @return int * @throws SMTPException */ public function send(Message $message, array $emails) : int { $this->connect(); // Establish or revive connection $this->command("RSET"); // Reset SMTP buffer $this->command(sprintf('MAIL FROM:<%1$s>', $message->getSender()[0]), null, 250); // Set mail from $count = 0; foreach ($emails as $email) { $this->write(sprintf('RCPT TO:<%1$s>', $email)); $this->read(); if ($this->lastResponseCode !== 250) { throw SMTPException::invalidRecipient(substr($this->lastResponse, 4)); } $count++; } $messageMime = $message->getCompiled(); $messageMimeSize = strlen($messageMime); if ($this->options["size"] > 0 && $messageMimeSize > $this->options["size"]) { throw SMTPException::exceedsMaximumSize($messageMimeSize, $this->options["size"]); } $this->command("DATA", null, 354); $this->write($messageMime); // Write MIME $this->command(".", null, 250); // End DATA // Keep alive? if (!$this->keepAlive) { $this->write("QUIT"); // Send QUIT command unset($this->stream); // Close stream resource } return $count; }