sServName = $sServName; $this->setTemplate($sTemplate); $this->asDests = array(); } public function setTemplate($sTemplate) { $this->sTemplate = $sTemplate; $this->asTranslators = array(); $this->asTemplates = array(); } private function getTemplate($sLanguage) { if(!array_key_exists($sLanguage, $this->asTemplates)) { $this->asTranslators[$sLanguage] = new Translator($sLanguage); $this->buildTemplate($sLanguage); } return array('subject'=>$this->asTranslators[$sLanguage]->getTranslation('conf_subject'), 'email'=>$this->asTemplates[$sLanguage]); } private function buildTemplate($sLanguage) { $oTemplate = new Mask($this->sTemplate, $this->asTranslators[$sLanguage]); switch($this->sTemplate) { case 'confirmation': break; case 'update': break; } $this->asTemplates[$sLanguage] = $oTemplate; } /** * Set Target User Info * @param array $asDests Contains: id_user, name, email, language, active */ public function setDestInfo($asDests) { if(array_key_exists('email', $asDests)) $asDests = array($asDests); $this->asDests = $asDests; } /*public function send() { $sEOL = "\r\n"; foreach($this->asDests as $asDest) { //Message $asTemplate = $this->getTemplate($asDest['language']); $oEmail = $asTemplate['email']; //Unsubscribe Link $sUnsubLink = $this->sServName.'?a=unsubscribe_email&id='.$asDest['id_user']; $oEmail->setTag('unsubscribe_link', $sUnsubLink); //Email Content $sHtmlMessage = $oEmail->getMask(); $sPlainMessage = strip_tags(str_replace('
', "\n", $sHtmlMessage)); //Email $iBoundary = uniqid("HTMLEMAIL"); $sHeaders = 'From: Spotty '.$sEOL. 'Reply-To: Spotty '.$sEOL. 'List-Unsubscribe: sServName)['host'].'?subject=unsubscribe>, <'.$sUnsubLink.'>'.$sEOL. 'List-Unsubscribe-Post: List-Unsubscribe=One-Click'.$sEOL. 'MIME-Version: 1.0'.$sEOL. 'Content-Type: multipart/alternative; boundary="'.$iBoundary.'"'.$sEOL; $sBody = '--'.$iBoundary.$sEOL. //Plain Message 'Content-Type: text/plain; charset=UTF-8'.$sEOL. 'Content-Transfer-Encoding: base64'.$sEOL. chunk_split(base64_encode($sPlainMessage)).$sEOL. '--'.$iBoundary.$sEOL. //HTML Message 'Content-Type: text/html; charset=UTF-8'.$sEOL. 'Content-Transfer-Encoding: base64'.$sEOL. chunk_split(base64_encode($sHtmlMessage)).$sEOL. '--'.$iBoundary.'--'; //Send if(!mail($asDest['email'], $asTemplate['subject'], $sBody, $sHeaders)) $this->addError('Could not send '.$this->sTemplate.' email to '.$asDest['email']); } }*/ public function send() { //Instantiation and passing `true` enables exceptions $oPHPMailer = new PHPMailer(true); //Server settings if(Settings::DEBUG) $oPHPMailer->SMTPDebug = SMTP::DEBUG_SERVER;//Enable verbose debug output $oPHPMailer->isSMTP(); //Send using SMTP $oPHPMailer->CharSet = Settings::TEXT_ENC; //Mail Character Set $oPHPMailer->Encoding = 'base64'; //Base 64 Character Encoding $oPHPMailer->Host = Settings::MAIL_SERVER; //Set the SMTP server to send through $oPHPMailer->SMTPAuth = true; //Enable SMTP authentication $oPHPMailer->Username = Settings::MAIL_USER; //SMTP username $oPHPMailer->Password = Settings::MAIL_PASS; //SMTP password $oPHPMailer->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; //Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged $oPHPMailer->Port = 587; //TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above $oPHPMailer->setFrom(Settings::MAIL_USER, 'Spotty'); $oPHPMailer->addReplyTo(Settings::MAIL_USER, 'Spotty'); foreach($this->asDests as $asDest) { try { //Message $asTemplate = $this->getTemplate($asDest['language']); $oEmail = $asTemplate['email']; //Unsubscribe Link $sUnsubLink = $this->sServName.'?a=unsubscribe_email&id='.$asDest['id_user']; $oEmail->setTag('unsubscribe_link', $sUnsubLink); //Email Content $sHtmlMessage = $oEmail->getMask(); $sPlainMessage = strip_tags(str_replace('
', "\n", $sHtmlMessage)); //Recipients $oPHPMailer->addAddress($asDest['email'], $asDest['name']); //Content $oPHPMailer->isHTML(true); $oPHPMailer->Subject = $asTemplate['subject']; $oPHPMailer->Body = $sHtmlMessage; $oPHPMailer->AltBody = $sPlainMessage; $oPHPMailer->send(); } catch (Exception $e) { $this->addError('Message could not be sent to "'.$asDest['email'].'". Mailer Error: '.$oPHPMailer->ErrorInfo); } } } }