Example #1
0
 /**
  * @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;
 }
Example #2
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;
 }