/** * @param Newsletter $newsletter */ public function sendNewsletter(Newsletter $newsletter, $languageKey = NULL) { $client = new Client(); try { $bodyTemplate = $this->convertTemplatesToGoTemplates($newsletter->getHtmlContent()); $bodyTemplate = str_replace('href="SHOWINBROWSER"', '{{ .showInBrowser }}', $bodyTemplate); $bodyTemplate = str_replace('href="UNSUBSCRIBE"', '{{ .unsubscribeUri }}', $bodyTemplate); $placeholdersInBodyTemplate = $this->foundPlaceholdersInLastProcessedTemplate; $senderEmailTemplate = $this->convertTemplatesToGoTemplates($newsletter->getSenderEmailTemplate() ?: '*****@*****.**'); $replyToEmailTemplate = $senderEmailTemplate; if ($newsletter->getReplyToEmailTemplate()) { $replyToEmailTemplate = $this->convertTemplatesToGoTemplates($newsletter->getReplyToEmailTemplate()); } $request = array('RecipientsList' => $newsletter->getReceiverGroup()->getCacheFileName($languageKey), 'Templates' => array('SubjectTemplate' => $this->convertTemplatesToGoTemplates($newsletter->getSubject()), 'BodyTemplate' => $bodyTemplate, 'ReceiverEmailTemplate' => $this->convertTemplatesToGoTemplates($newsletter->getReceiverEmailTemplate() ?: '{email}'), 'ReceiverNameTemplate' => $this->convertTemplatesToGoTemplates($newsletter->getReceiverNameTemplate() ?: '{firstName} {lastName}'), 'SenderEmailTemplate' => $senderEmailTemplate, 'SenderNameTemplate' => $this->convertTemplatesToGoTemplates($newsletter->getSenderNameTemplate() ?: 'Newsletter'), 'ReplyToEmailTemplate' => $replyToEmailTemplate, 'LinkTemplates' => array('unsubscribeUri' => array('EncryptionKey' => $this->hmacUrlSecret, 'BaseLink' => $newsletter->getUnsubscribeLink(), 'Parameters' => ['email']), 'showInBrowser' => array('EncryptionKey' => $this->hmacUrlSecret, 'BaseLink' => $newsletter->getNewsletterLink(), 'Parameters' => $placeholdersInBodyTemplate)))); $blacklistFileName = $newsletter->getReceiverGroup()->getUnsubscribeList()->getUnsubscribeFileName(); if (file_exists($blacklistFileName)) { $request['Blacklist'] = $blacklistFileName; } $response = $client->post(rtrim($this->sendingApiUri, '/') . '/' . $this->authToken . '/newsletter/' . $newsletter->getIdentifier() . '/send', array('body' => json_encode($request))); } catch (RequestException $e) { $errorMessage = 'There was an error communicating with the newsletter API -- HTTP Status Code: ' . $e->getCode(); if ($e->hasResponse()) { $errorMessage .= "\nResponse Body:\n" . $e->getResponse()->getBody()->__toString(); } throw new \Exception($errorMessage, 1431428827, $e); } }