/**
  * @param MailgunManager $transport
  * @param MailWrappedMessage|null $message
  * @return bool|int
  * @throws MailWrapperSetupException
  * @throws \Exception
  * @throws \Mailgun\Messages\Exceptions\TooManyParameters
  */
 public static function send(MailgunManager $transport, MailWrappedMessage $message = null)
 {
     if (!$message) {
         throw new MailWrapperSetupException('No Message');
     }
     if (MailgunMessage::RECIPIENT_COUNT_LIMIT <= count($message->getToRecipients())) {
         throw new MailWrapperSetupException(MailgunMessage::RECIPIENT_COUNT_LIMIT . ' limit exceeded');
     }
     $batch = MessageTransformerMailgun::fromWrappedMessage($message, $transport);
     try {
         $batch->finalize();
     } catch (\Exception $e) {
         throw new MailWrapperSendException($e->getMessage(), $e->getCode(), $e);
     }
     $ids = $batch->getMessageIds();
     return 1 == count($ids) ? $ids[0] : false;
 }
 /**
  * @inheritDoc
  */
 public static function toWrappedMessage($message, $transport = null)
 {
     if (!$message instanceof \Swift_Message) {
         throw new MailWrapperSetupException('Invalid Message');
     }
     $wrappedMessage = new MailWrappedMessage();
     $wrappedMessage->setWrappedMessage($message);
     $subject = $message->getSubject();
     $content = $message->getBody();
     $toRecipients = $message->getTo();
     $ccRecipients = $message->getCc();
     $bccRecipients = $message->getBcc();
     $from = $message->getFrom() ? key($message->getFrom()) : null;
     $replyTo = $message->getReplyTo() ? key($message->getReplyTo()) : null;
     //
     $wrappedMessage->setSubject($subject);
     $wrappedMessage->setContentText($content);
     $address = MailManager::isEmailAddress($from);
     if ($address) {
         $wrappedMessage->setFrom($address);
     }
     $address = MailManager::isEmailAddress($replyTo);
     if ($address) {
         $wrappedMessage->setReplyTo($address);
     }
     if ($toRecipients) {
         foreach (array_keys($toRecipients) as $address) {
             $wrappedMessage->addToRecipient($address);
         }
     }
     if ($ccRecipients) {
         foreach (array_keys($ccRecipients) as $address) {
             $wrappedMessage->addCcRecipient($address);
         }
     }
     if ($bccRecipients) {
         foreach (array_keys($bccRecipients) as $address) {
             $wrappedMessage->addBccRecipient($address);
         }
     }
     return $wrappedMessage;
 }
 /**
  * @inheritDoc
  */
 public static function toWrappedMessage($message, $transport = null)
 {
     if (!$message instanceof \PHPMailer) {
         throw new MailWrapperSetupException('Invalid Message');
     }
     $wrappedMessage = new MailWrappedMessage();
     $wrappedMessage->setWrappedMessage($message);
     $subject = $message->Subject;
     $content = $message->Body;
     $from = $message->From;
     $toRecipients = $message->getToAddresses();
     $ccRecipients = $message->getCcAddresses();
     $bccRecipients = $message->getBccAddresses();
     $replyToAddresses = $message->getReplyToAddresses();
     //
     $wrappedMessage->setSubject($subject);
     $wrappedMessage->setContentText($content);
     $address = MailManager::isEmailAddress($from);
     if ($address) {
         $wrappedMessage->setFrom($address);
     }
     foreach ($replyToAddresses as $address) {
         $wrappedMessage->setReplyTo($address[0]);
     }
     foreach ($toRecipients as $address) {
         $wrappedMessage->addToRecipient($address[0]);
     }
     foreach ($ccRecipients as $address) {
         $wrappedMessage->addCcRecipient($address[0]);
     }
     foreach ($bccRecipients as $address) {
         $wrappedMessage->addBccRecipient($address[0]);
     }
     return $wrappedMessage;
 }