コード例 #1
0
 /**
  * {@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;
 }
コード例 #2
0
 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();
 }