/** * @param Campaign $campaign * @param CampaignEmail $campaignEmail * @param CampaignRepository $campaignRepository * @return bool */ public function send(Campaign $campaign, CampaignEmail $campaignEmail, CampaignRepository $campaignRepository) { $name = $this->getNameFromVariables($campaignEmail->variables()); $html = $this->insertVariables($campaign->html(), $campaignEmail->variables()); $plaintext = $this->insertVariables($campaign->plaintext(), $campaignEmail->variables()); $subjectLine = $this->insertVariables($campaign->subjectLine(), $campaignEmail->variables()); $message = Swift_Message::newInstance(); $message->setTo(array($campaignEmail->emailAddress() => $name)); $message->setSubject($subjectLine); $message->setBody($plaintext, 'text/plain'); $message->addPart($html, 'text/html'); $message->setFrom(array($campaign->fromEmail() => $campaign->fromName())); if ($campaign->replyToEmail()) { $message->setReplyTo($campaign->replyToEmail()); } if ($campaign->bounceEmail()) { $message->setReturnPath($campaign->bounceEmail()); } // Send the email $transport = Swift_SmtpTransport::newInstance(Config::get('mail.host'), Config::get('mail.port')); $transport->setUsername(Config::get('mail.username')); $transport->setPassword(Config::get('mail.password')); $mailer = Swift_Mailer::newInstance($transport); $result = $mailer->send($message); return (bool) $result; }
/** * @param Campaign $campaign * @param CampaignEmail $campaignEmail * @param CampaignRepository $campaignRepository * @return boolean */ public function send(Campaign $campaign, CampaignEmail $campaignEmail, CampaignRepository $campaignRepository = null) { $vars = []; $vars['from'] = $campaign->fromName() . ' <' . $campaign->fromEmail() . '>'; $vars['to'] = $this->getNameFromVariables($campaignEmail->variables()) . ' <' . $campaignEmail->emailAddress() . '>'; $vars['subject'] = $this->insertVariables($campaign->subjectLine(), $campaignEmail->variables()); $vars['text'] = $this->insertVariables($campaign->plaintext(), $campaignEmail->variables()); $vars['html'] = $this->insertVariables($campaign->html(), $campaignEmail->variables()); $vars['o:campaign'] = $campaign->remoteCampaignId(); return true; }
/** * @param Campaign $campaign * @param CampaignEmail $campaignEmail * @param CampaignRepository $campaignRepository * @return Campaign * @throws \Mailgun\Messages\Exceptions\MissingRequiredMIMEParameters */ public function send(Campaign $campaign, CampaignEmail $campaignEmail, CampaignRepository $campaignRepository) { $mg = new Mailgun($this->key); $domain = $campaign->getFromEmailDomain(); if (!$campaign->remoteCampaignId()) { $campaign = $this->setRemoteCampaignId($campaign, $mg, $domain, $campaignRepository); } $vars = []; $vars['from'] = $campaign->fromName() . ' <' . $campaign->fromEmail() . '>'; $vars['to'] = $this->getNameFromVariables($campaignEmail->variables()) . ' <' . $campaignEmail->emailAddress() . '>'; $vars['subject'] = $this->insertVariables($campaign->subjectLine(), $campaignEmail->variables()); $vars['text'] = $this->insertVariables($campaign->plaintext(), $campaignEmail->variables()); $vars['html'] = $this->insertVariables($campaign->html(), $campaignEmail->variables()); $vars['o:campaign'] = $campaign->remoteCampaignId(); $vars['o:testmode'] = $this->testMode; $result = $mg->sendMessage($domain, $vars); return $result; }
/** * @test */ function get_email_domain_returns_domain() { $campaignEmail = new CampaignEmail($this->campaignEmailData); $this->assertEquals('gmail.com', $campaignEmail->getEmailDomain()); }
/** * @param CampaignEmail $campaignEmail * @return CampaignEmail */ public function save($campaignEmail) { $data = ['id' => $campaignEmail->id(), 'campaign_id' => $campaignEmail->campaignId(), 'email_address' => $campaignEmail->emailAddress(), 'variables' => json_encode($campaignEmail->variables()), 'failed' => $campaignEmail->failed(), 'created_at' => $campaignEmail->createdAt(), 'updated_at' => $campaignEmail->updatedAt()]; return $this->saveEntity($campaignEmail, $data); }