public function testCanSetBccListFromAddressList() { $list = new AddressList(); $list->add('*****@*****.**'); $this->message->addBcc('*****@*****.**'); $this->message->setBcc($list); $bcc = $this->message->getBcc(); $this->assertEquals(1, count($bcc)); $this->assertFalse($bcc->has('*****@*****.**')); $this->assertTrue($bcc->has('*****@*****.**')); }
/** * Send a mail message * * @param \Zend\Mail\Message $message * @return array */ public function send(Mail\Message $message) { $consumer = new Consumer(); $consumer->setUrl($this->config['url']); $params = array('to' => urlencode($this->config['to']), 'subject' => urlencode($message->getSubject()), 'from' => urlencode($message->getFrom()->current()->getEmail()), 'fromname' => urlencode($message->getFrom()->current()->getName()), 'text' => urlencode($message->getBodyText()), 'api_user' => urlencode($this->config['user']), 'api_key' => urlencode($this->config['key'])); $bcc = $message->getBcc()->current(); if ($bcc) { $params['bcc'] = $bcc->getEmail(); } $consumer->setParams($params); $consumer->setResponseType('json'); $consumer->setCallType('get'); return $consumer->doApiCall(); }
/** * {@inheritDoc} * @link http://help.postageapp.com/kb/api/send_message * @return array The id and UID of the sent message (if sent correctly) */ public function send(Message $message) { $from = $message->getFrom(); if (count($from) !== 1) { throw new Exception\RuntimeException('Postage API requires exactly one from sender'); } if (count($message->getCc())) { throw new Exception\RuntimeException('Postage does not support CC addresses'); } if (count($message->getBcc())) { throw new Exception\RuntimeException('Postage does not support BCC addresses'); } $parameters = array('uid' => sha1(json_encode(uniqid())), 'arguments' => array('headers' => array('subject' => $message->getSubject(), 'from' => $from->rewind()->toString()), 'content' => array('text/plain' => $this->extractText($message), 'text/html' => $this->extractHtml($message)))); $to = array(); foreach ($message->getTo() as $address) { $to[] = $address->toString(); } $parameters['arguments']['recipients'] = implode(',', $to); $replyTo = $message->getReplyTo(); if (count($replyTo) > 1) { throw new Exception\RuntimeException('Postage has only support for one Reply-To address'); } elseif (count($replyTo)) { $parameters['headers']['reply-to'] = $replyTo->rewind()->toString(); } if ($message instanceof PostageMessage) { if ($message->getTemplate() !== '') { $parameters['arguments']['template'] = $message->getTemplate(); $parameters['arguments']['variables'] = $message->getVariables(); } } $attachments = $this->extractAttachments($message); foreach ($attachments as $attachment) { $parameters['arguments']['attachments'][$attachment->filename] = array('content_type' => $attachment->type, 'content' => base64_encode($attachment->getRawContent())); } $response = $this->prepareHttpClient('/send_message.json', $parameters)->send(); $data = $this->parseResponse($response); return array('uid' => $parameters['uid'], 'id' => $data['message']['id']); }
/** * Prepare array of email address recipients * * @param Message $message * @return array */ protected function prepareRecipients(Message $message) { $recipients = array(); foreach ($message->getTo() as $address) { $recipients[] = $address->getEmail(); } foreach ($message->getCc() as $address) { $recipients[] = $address->getEmail(); } foreach ($message->getBcc() as $address) { $recipients[] = $address->getEmail(); } $recipients = array_unique($recipients); return $recipients; }
/** * Prepare array of email address recipients * * @param Message $message * @return array */ protected function prepareRecipients(Message $message) { if ($this->getEnvelope() && $this->getEnvelope()->getTo()) { return (array) $this->getEnvelope()->getTo(); } $recipients = []; foreach ($message->getTo() as $address) { $recipients[] = $address->getEmail(); } foreach ($message->getCc() as $address) { $recipients[] = $address->getEmail(); } foreach ($message->getBcc() as $address) { $recipients[] = $address->getEmail(); } $recipients = array_unique($recipients); return $recipients; }
/** * Create `Mandrill message` from `ZF message`. * * @param ZendMessage $zfMessage * * @return Message */ public static function convertZFMail(ZendMessage $zfMessage) { $mandrillMessage = new self(); // GET HTML MIME PART $messageHtmlPart = $messageTextPart = null; $mimeParts = $zfMessage->getBody()->getParts(); foreach ($mimeParts as $mimePart) { switch ($mimePart->getType()) { case ZendMime::TYPE_HTML: $messageHtmlPart = $mimePart->getContent(); break; case ZendMime::TYPE_TEXT: $messageTextPart = $mimePart->getContent(); break; } } // text part if ($messageTextPart !== null) { $mandrillMessage->text = $messageTextPart; } // html part if ($messageHtmlPart !== null) { $mandrillMessage->html = $messageHtmlPart; } // subject if ($zfMessage->getSubject() !== null) { $mandrillMessage->subject = $zfMessage->getSubject(); } // from if ($zfMessage->getFrom()->count()) { $mandrillMessage->from_email = $zfMessage->getFrom()->current()->getEmail(); $mandrillMessage->from_name = $zfMessage->getFrom()->current()->getName(); } // reply-to if ($zfMessage->getReplyTo()->count()) { $mandrillMessage->headers = ['Reply-To' => $zfMessage->getReplyTo()->current()->getEmail()]; } // to if ($zfMessage->getTo()->count()) { foreach ($zfMessage->getTo() as $to) { $mandrillMessage->addRecipient(new Recipient($to->getEmail(), null, Recipient::RECIPIENT_TYPE_TO)); } } // cc if ($zfMessage->getCc()->count()) { foreach ($zfMessage->getCc() as $cc) { $mandrillMessage->addRecipient(new Recipient($cc->getEmail(), null, Recipient::RECIPIENT_TYPE_CC)); } } // bcc if ($zfMessage->getBcc()->count()) { foreach ($zfMessage->getBcc() as $bcc) { $mandrillMessage->addRecipient(new Recipient($bcc->getEmail(), null, Recipient::RECIPIENT_TYPE_BCC)); } } return $mandrillMessage; }
/** * Prepares list of all mail recipients * * @param Message $message * @return array */ private function prepareAddressList(Message $message) { $addressList = array(); foreach ($message->getTo() as $address) { $addressList[] = $address->getEmail(); } foreach ($message->getCc() as $address) { $addressList[] = $address->getEmail(); } foreach ($message->getBcc() as $address) { $addressList[] = $address->getEmail(); } return $addressList; }