public function withEmailFound() { $email = new EmailEntity(); $email->exchangeArray(['id' => 'emailId']); $this->mockEmailMapper->expects($this->once())->method('findById')->with($this->equalTo('emailId'))->will($this->returnValue($email)); return $email; }
/** * Build Mandrill compatible message array from email entity * * Documentation at https://mandrillapp.com/api/docs/messages.php.html * * @param EmailEntity $emails * @return array */ protected function buildMessage(EmailEntity $email) { // Create attachments array $attachments = json_decode($email->getAttachments(), true); $recipientEmail = $email->getRecipientEmail(); $to = [['email' => $this->filterThroughWhitelist($recipientEmail), 'name' => $email->getRecipientName(), 'type' => 'to']]; $message = ['html' => $email->getMessage(), 'subject' => $email->getSubject(), 'from_email' => $email->getSenderEmail(), 'from_name' => $email->getSenderName(), 'to' => $to, 'attachments' => $attachments, 'headers' => json_decode($email->getHeaders(), true), 'important' => false, 'track_opens' => true, 'track_clicks' => true, 'auto_text' => true, 'auto_html' => false, 'inline_css' => true, 'url_strip_qs' => null, 'preserve_recipients' => false, 'bcc_address' => $email->getBcc(), 'merge' => true]; return $message; }
public function expectingEmailCreatedFromArray() { $captured = new \stdClass(); $this->mockEmailService->expects($this->once())->method('createFromArray')->will($this->returnCallback(function ($array) use($captured) { $captured->emailArray = $array; $email = new EmailEntity(); $email->exchangeArray($array); $captured->createdEmailEntity = $email; return $email; })); return $captured; }
/** * Build Mailgun compatible message array from email entity * * Documentation at https://mandrillapp.com/api/docs/messages.php.html * * @param EmailEntity $emails * @return array */ protected function buildMessage(EmailEntity $email) { // Create attachments array $attachments = json_decode($email->getAttachments(), true) ?: []; // Convert Mandrill format to Mailgun format $attachments = array_map(function ($attachment) { if (isset($attachment['content'])) { $attachment['data'] = base64_decode(Arr::remove($attachment, 'content')); } if (isset($attachment['name'])) { $attachment['filename'] = Arr::remove($attachment, 'name'); } if (isset($attachment['type'])) { $attachment['contentType'] = Arr::remove($attachment, 'type'); } return attachment; }, $attachments); if ($email->getSenderName()) { $from = "{$email->getSenderName()} <{$email->getSenderEmail()}>"; } else { $from = $email->getSenderEmail(); } if ($email->getTemplateName()) { $html = $this->templateService->renderHbsForEmail($email->getTemplateName(), $email->getTemplateData() ? json_decode($email->getTemplateData(), true) : []); } else { $html = $email->getMessage(); } $message = ['html' => $html, 'subject' => $email->getSubject(), 'from' => $from, 'to' => $this->filterThroughWhitelist($email->getRecipientEmail()), 'attachments' => $attachments]; if ($email->getHeaders()) { $headers = []; foreach (json_decode($email->getHeaders(), true) as $key => $value) { $headers["h:{$key}"] = $value; } $message['headers'] = $headers; } return $message; }
/** * Queue a job to send an email * * @param EmailEntity $email * @return string */ public function enqueueSendEmailJob(EmailEntity $email) { return $this->resque->enqueue('email', 'Synapse\\Work\\Email\\Send', ['id' => $email->getId()]); }