Ejemplo n.º 1
0
 /**
  * @param ObjectManager $om
  */
 protected function loadEmailsDemo(ObjectManager $om)
 {
     $adminUser = $om->getRepository('OroUserBundle:User')->findOneByUsername('admin');
     foreach ($this->templates as $index => $template) {
         $owner = $this->getReference('simple_user');
         $simpleUser2 = $this->getReference('simple_user2');
         $origin = $this->mailerProcessor->getEmailOrigin($owner->getEmail());
         $emailUser = $this->emailEntityBuilder->emailUser($template['Subject'], $owner->getEmail(), $owner->getEmail(), new \DateTime($template['SentAt']), new \DateTime('now'), new \DateTime('now'), Email::NORMAL_IMPORTANCE, "cc{$index}@example.com", "bcc{$index}@example.com");
         $emailUser->setFolder($origin->getFolder(FolderType::SENT));
         $emailUser->getEmail()->addActivityTarget($owner);
         $emailUser->getEmail()->addActivityTarget($simpleUser2);
         $emailUser->getEmail()->setHead(true);
         $emailUser->setOrganization($owner->getOrganization());
         $emailUser->setOwner($owner);
         $emailBody = $this->emailEntityBuilder->body("Hi,\n" . $template['Text'], false, true);
         $emailUser->getEmail()->setEmailBody($emailBody);
         $emailUser->getEmail()->setMessageId(sprintf('<id+&?= %s@%s>', $index, 'bap.migration.generated'));
         $this->setReference('email_' . ($index + 1), $emailUser->getEmail());
         $this->setReference('emailUser_' . ($index + 1), $emailUser);
         $this->setReference('emailBody_' . ($index + 1), $emailBody);
     }
     $emailUser->setOwner($adminUser);
     $this->setReference('emailUser_for_mass_mark_test', $emailUser);
     $this->emailEntityBuilder->getBatch()->persist($om);
 }
Ejemplo n.º 2
0
 public function testEmailUser()
 {
     $this->initEmailStorage();
     $date = new \DateTime('now');
     $emailUser = $this->builder->emailUser('testSubject', '"Test" <*****@*****.**>', '"Test1" <*****@*****.**>', $date, $date, $date, Email::NORMAL_IMPORTANCE, ['"Test2" <*****@*****.**>', '*****@*****.**'], ['"Test3" <*****@*****.**>', '*****@*****.**']);
     $this->assertEquals('testSubject', $emailUser->getEmail()->getSubject());
     $this->assertEquals('"Test" <*****@*****.**>', $emailUser->getEmail()->getFromName());
     $this->assertEquals('*****@*****.**', $emailUser->getEmail()->getFromEmailAddress()->getEmail());
     $this->assertEquals($date, $emailUser->getEmail()->getSentAt());
     $this->assertEquals($date, $emailUser->getEmail()->getInternalDate());
     $this->assertEquals(Email::NORMAL_IMPORTANCE, $emailUser->getEmail()->getImportance());
     $to = $emailUser->getEmail()->getRecipients(EmailRecipient::TO);
     $this->assertEquals('"Test1" <*****@*****.**>', $to[0]->getName());
     $this->assertEquals('*****@*****.**', $to[0]->getEmailAddress()->getEmail());
     $cc = $emailUser->getEmail()->getRecipients(EmailRecipient::CC);
     $this->assertEquals('"Test2" <*****@*****.**>', $cc[1]->getName());
     $this->assertEquals('*****@*****.**', $cc[1]->getEmailAddress()->getEmail());
     $this->assertEquals('*****@*****.**', $cc[2]->getName());
     $this->assertEquals('*****@*****.**', $cc[2]->getEmailAddress()->getEmail());
     $bcc = $emailUser->getEmail()->getRecipients(EmailRecipient::BCC);
     $this->assertEquals('"Test3" <*****@*****.**>', $bcc[3]->getName());
     $this->assertEquals('*****@*****.**', $bcc[3]->getEmailAddress()->getEmail());
     $this->assertEquals('*****@*****.**', $bcc[4]->getName());
     $this->assertEquals('*****@*****.**', $bcc[4]->getEmailAddress()->getEmail());
     $this->assertCount(2, $bcc);
 }
Ejemplo n.º 3
0
 /**
  * @param string               $subject
  * @param string               $messageId
  * @param string               $from
  * @param string|string[]      $to
  * @param string|string[]|null $cc
  * @param string|string[]|null $bcc
  *
  * @return Email
  */
 protected function createEmail($subject, $messageId, $from, $to, $cc = null, $bcc = null)
 {
     $origin = $this->mailerProcessor->getEmailOrigin($this->getReference('simple_user')->getEmail());
     $folder = $origin->getFolder(FolderType::SENT);
     $date = new \DateTime('now', new \DateTimeZone('UTC'));
     $emailUser = $this->emailEntityBuilder->emailUser($subject, $from, $to, $date, $date, $date, Email::NORMAL_IMPORTANCE, $cc, $bcc);
     $emailUser->setFolder($folder);
     $emailUser->getEmail()->setMessageId($messageId);
     return $emailUser->getEmail();
 }
Ejemplo n.º 4
0
 /**
  * @param EmailModel  $model
  * @param \DateTime   $messageDate
  * @param EmailOrigin $origin
  *
  * @return EmailUser
  */
 protected function createEmailUser(EmailModel $model, $messageDate, EmailOrigin $origin)
 {
     $emailUser = $this->emailEntityBuilder->emailUser($model->getSubject(), $model->getFrom(), $model->getTo(), $messageDate, $messageDate, $messageDate, Email::NORMAL_IMPORTANCE, $model->getCc(), $model->getBcc(), $origin->getOwner(), $origin->getOrganization());
     if ($origin instanceof UserEmailOrigin && $origin->getMailbox() !== null) {
         $emailUser->setOwner(null);
         $emailUser->setMailboxOwner($origin->getMailbox());
     }
     return $emailUser;
 }
Ejemplo n.º 5
0
 /**
  * @param ObjectManager $om
  */
 protected function loadEmailsDemo(ObjectManager $om)
 {
     foreach ($this->templates as $index => $template) {
         $owner = $this->getReference('simple_user');
         $simpleUser2 = $this->getReference('simple_user2');
         $origin = $this->mailerProcessor->getEmailOrigin($owner->getEmail());
         $emailUser = $this->emailEntityBuilder->emailUser($template['Subject'], $owner->getEmail(), $owner->getEmail(), new \DateTime('now'), new \DateTime('now'), new \DateTime('now'), Email::NORMAL_IMPORTANCE, "cc{$index}@example.com", "bcc{$index}@example.com");
         $emailUser->setFolder($origin->getFolder(FolderType::SENT));
         $emailUser->getEmail()->addActivityTarget($owner);
         $emailUser->getEmail()->addActivityTarget($simpleUser2);
         $emailUser->setOrganization($owner->getOrganization());
         $emailUser->setOwner($owner);
         $emailBody = $this->emailEntityBuilder->body("Hi,\n" . $template['Text'], false, true);
         $emailUser->getEmail()->setEmailBody($emailBody);
         $emailUser->getEmail()->setMessageId(sprintf('id.%s@%s', uniqid(), '@bap.migration.generated'));
         $this->setReference('email_' . ($index + 1), $emailUser->getEmail());
         $this->setReference('emailBody_' . ($index + 1), $emailBody);
     }
     $this->emailEntityBuilder->getBatch()->persist($om);
 }
Ejemplo n.º 6
0
 /**
  * @param $randomTemplate
  * @param User $owner
  * @param Contact $contact
  * @param EmailOrigin $origin
  *
  * @return EmailUser
  */
 protected function addEmailUser($randomTemplate, $owner, $contact, $origin)
 {
     $emailUser = $this->emailEntityBuilder->emailUser($this->templates[$randomTemplate]['Subject'], $owner->getEmail(), $contact->getPrimaryEmail()->getEmail(), new \DateTime('now'), new \DateTime('now'), new \DateTime('now'));
     $this->setSecurityContext($owner);
     $emailUser->setFolder($origin->getFolder(FolderType::SENT));
     $emailUser->setOwner($owner);
     $emailUser->setOrganization($owner->getOrganization());
     $emailBody = $this->emailEntityBuilder->body("Hi,\n" . $this->templates[$randomTemplate]['Text'], false, true);
     $emailUser->getEmail()->setEmailBody($emailBody);
     $emailUser->getEmail()->setMessageId(sprintf('<id.%s@%s', uniqid(), '@bap.migration.generated>'));
     return $emailUser;
 }
Ejemplo n.º 7
0
 /**
  * Process email model sending.
  *
  * @param EmailModel $model
  *
  * @return EmailUser
  * @throws \Swift_SwiftException
  */
 public function process(EmailModel $model)
 {
     $this->assertModel($model);
     $messageDate = new \DateTime('now', new \DateTimeZone('UTC'));
     $parentMessageId = $this->getParentMessageId($model);
     /** @var \Swift_Message $message */
     $message = $this->mailer->createMessage();
     if ($parentMessageId) {
         $message->getHeaders()->addTextHeader('References', $parentMessageId);
         $message->getHeaders()->addTextHeader('In-Reply-To', $parentMessageId);
     }
     $message->setDate($messageDate->getTimestamp());
     $message->setFrom($this->getAddresses($model->getFrom()));
     $message->setTo($this->getAddresses($model->getTo()));
     $message->setCc($this->getAddresses($model->getCc()));
     $message->setBcc($this->getAddresses($model->getBcc()));
     $message->setSubject($model->getSubject());
     $message->setBody($model->getBody(), $model->getType() === 'html' ? 'text/html' : 'text/plain');
     $this->addAttachments($message, $model);
     $this->processEmbeddedImages($message, $model);
     $messageId = '<' . $message->generateId() . '>';
     if (!$this->mailer->send($message)) {
         throw new \Swift_SwiftException('An email was not delivered.');
     }
     $origin = $this->getEmailOrigin($model->getFrom());
     $emailUser = $this->emailEntityBuilder->emailUser($model->getSubject(), $model->getFrom(), $model->getTo(), $messageDate, $messageDate, $messageDate, Email::NORMAL_IMPORTANCE, $model->getCc(), $model->getBcc(), $origin->getOwner(), $origin->getOrganization());
     $emailUser->setFolder($origin->getFolder(FolderType::SENT));
     $emailUser->getEmail()->setEmailBody($this->emailEntityBuilder->body($message->getBody(), $model->getType() === 'html', true));
     $emailUser->getEmail()->setMessageId($messageId);
     $emailUser->setSeen(true);
     if ($parentMessageId) {
         $emailUser->getEmail()->setRefs($parentMessageId);
     }
     // persist the email and all related entities such as folders, email addresses etc.
     $this->emailEntityBuilder->getBatch()->persist($this->getEntityManager());
     $this->persistAttachments($model, $emailUser->getEmail());
     // associate the email with the target entity if exist
     $contexts = $model->getContexts();
     foreach ($contexts as $context) {
         $this->emailActivityManager->addAssociation($emailUser->getEmail(), $context);
     }
     // flush all changes to the database
     $this->getEntityManager()->flush();
     $event = new EmailBodyAdded($emailUser->getEmail());
     $this->eventDispatcher->dispatch(EmailBodyAdded::NAME, $event);
     return $emailUser;
 }
 /**
  * Creates email entity and register it in the email entity batch processor
  *
  * @param EmailHeader           $email
  * @param EmailFolder           $folder
  * @param bool                  $isSeen
  * @param User                  $owner
  * @param OrganizationInterface $organization
  *
  * @return EmailUser
  */
 protected function addEmailUser(EmailHeader $email, EmailFolder $folder, $isSeen = false, User $owner = null, OrganizationInterface $organization = null)
 {
     $emailUser = $this->emailEntityBuilder->emailUser($email->getSubject(), $email->getFrom(), $email->getToRecipients(), $email->getSentAt(), $email->getReceivedAt(), $email->getInternalDate(), $email->getImportance(), $email->getCcRecipients(), $email->getBccRecipients(), $owner, $organization);
     $emailUser->setFolder($folder)->setSeen($isSeen)->getEmail()->setMessageId($email->getMessageId())->setMultiMessageId($email->getMultiMessageId())->setRefs($email->getRefs())->setXMessageId($email->getXMessageId())->setXThreadId($email->getXThreadId());
     return $emailUser;
 }