/** * {@inheritdoc} */ public function loadEmailBody(Email $email, EntityManager $em) { /** @var ImapEmailOrigin $origin */ $origin = $email->getFolder()->getOrigin(); $config = new ImapConfig($origin->getHost(), $origin->getPort(), $origin->getSsl(), $origin->getUser(), $this->encryptor->decryptData($origin->getPassword())); $manager = new ImapEmailManager($this->connectorFactory->createImapConnector($config)); $manager->selectFolder($email->getFolder()->getFullName()); $repo = $em->getRepository('OroImapBundle:ImapEmail'); $query = $repo->createQueryBuilder('e')->select('e.uid')->where('e.email = ?1')->setParameter(1, $email)->getQuery(); /** @var ImapEmail $imapEmail */ $imapEmail = $query->getSingleResult(); $loadedEmail = $manager->findEmail($imapEmail['uid']); if ($loadedEmail === null) { throw new \RuntimeException(sprintf('Cannot find a body for "%s" email.', $email->getSubject())); } $builder = new EmailBodyBuilder(); $builder->setEmailBody($loadedEmail->getBody()->getContent(), $loadedEmail->getBody()->getBodyIsText()); foreach ($loadedEmail->getAttachments() as $attachment) { $builder->addEmailAttachment($attachment->getFileName(), $attachment->getContent(), $attachment->getContentType(), $attachment->getContentTransferEncoding()); } return $builder->getEmailBody(); }
public function testFolderGetterAndSetter() { $folder = $this->getMock('Oro\\Bundle\\EmailBundle\\Entity\\EmailFolder'); $entity = new Email(); $entity->setFolder($folder); $this->assertTrue($folder === $entity->getFolder()); }