/** * {@inheritdoc} */ public function send(\Swift_Mime_Message $message, &$failedRecipients = null) { if ($evt = $this->eventDispatcher->createSendEvent($this, $message)) { $this->eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); if ($evt->bubbleCancelled()) { return 0; } } $data = array('From' => join(',', static::convertEmailsArray($message->getFrom())), 'To' => join(',', static::convertEmailsArray($message->getTo())), 'Subject' => $message->getSubject()); if ($cc = $message->getCc()) { $data['Cc'] = join(',', static::convertEmailsArray($cc)); } if ($reply_to = $message->getReplyTo()) { $data['ReplyTo'] = join(',', static::convertEmailsArray($reply_to)); } if ($bcc = $message->getBcc()) { $data['Bcc'] = join(',', static::convertEmailsArray($bcc)); } switch ($message->getContentType()) { case 'text/html': case 'multipart/alternative': $data['HtmlBody'] = $message->getBody(); break; default: $data['TextBody'] = $message->getBody(); break; } if ($plain = $this->getMIMEPart($message, 'text/plain')) { $data['TextBody'] = $plain->getBody(); } if ($html = $this->getMIMEPart($message, 'text/html')) { $data['HtmlBody'] = $html->getBody(); } if ($message->getChildren()) { $data['Attachments'] = array(); foreach ($message->getChildren() as $attachment) { if (is_object($attachment) and $attachment instanceof \Swift_Mime_Attachment) { $attachmentData = array('Name' => $attachment->getFilename(), 'Content' => base64_encode($attachment->getBody()), 'ContentType' => $attachment->getContentType()); if ($attachment->getDisposition() != 'attachment' && $attachment->getId() != null) { $attachmentData['ContentID'] = 'cid:' . $attachment->getId(); } $data['Attachments'][] = $attachmentData; } } } $response = $this->getApi()->send($data); if ($evt) { $evt->setResult(\Swift_Events_SendEvent::RESULT_SUCCESS); $this->eventDispatcher->dispatchEvent($evt, 'sendPerformed'); } if (isset($response['MessageID'])) { $responseEvent = $this->eventDispatcher->createResponseEvent($this, $response['MessageID'], true); $this->eventDispatcher->dispatchEvent($responseEvent, 'responseReceived'); } return 1; }
function it_should_not_send_mail_if_cancelled(Swift_Mime_Message $message, Client $client, \Swift_Events_EventDispatcher $dispatcher, \Swift_Events_SendEvent $event) { $dispatcher->createSendEvent(Argument::any(), Argument::any())->willReturn($event); $dispatcher->dispatchEvent($event, 'beforeSendPerformed')->shouldBeCalled(); $event->bubbleCancelled()->willReturn(true); $this->send($message)->shouldBeEqualTo(0); $client->post(Argument::any())->shouldNotBeCalled(); }