/** * @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); }
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); }
/** * @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(); }
/** * @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; }
/** * @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); }
/** * @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; }
/** * 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; }