/**
  * Get mail
  *
  * @return \Shockwavemk\Mail\Base\Model\Mail
  * @throws \Magento\Framework\Exception\MailException
  */
 public function getMail()
 {
     /** @noinspection IsEmptyFunctionUsageInspection */
     if (empty($this->_mail)) {
         $this->_mail = $this->objectManager->create('Shockwavemk\\Mail\\Base\\Model\\Mail');
         /** @var \Shockwavemk\Mail\Base\Model\Mail\AttachmentCollection $attachmentCollection */
         $attachmentCollection = $this->objectManager->get('Shockwavemk\\Mail\\Base\\Model\\Mail\\AttachmentCollection');
         foreach ($attachmentCollection as $attachment) {
             $this->_mail->addAttachment($attachment);
         }
     }
     return $this->_mail;
 }
 /**
  * Save all attachments of a given mail
  *
  * @param \Shockwavemk\Mail\Base\Model\Mail $mail
  * @return $this
  */
 public function saveAttachments($mail)
 {
     /** @var \Shockwavemk\Mail\Base\Model\Mail\Attachment[] $attachments */
     $attachments = $mail->getAttachments();
     foreach ($attachments as $attachment) {
         $this->saveAttachment($attachment);
     }
     return $this;
 }
 /**
  * TODO
  *
  * @param \Shockwavemk\Mail\Base\Model\Mail $mail
  *
  * @return TransportBuilder
  * @throws \Magento\Framework\Exception\MailException
  */
 protected function deriveTransportBuilderFromExistingMail($mail)
 {
     return $this->transportBuilder->setTemplateIdentifier($mail->getTemplateIdentifier())->setTemplateOptions(['area' => Area::AREA_FRONTEND, 'store' => $mail->getStoreId()])->setTemplateVars($mail->getVars())->setFrom($mail->getSenderMail());
 }