Add update emails
This commit is contained in:
155
inc/email.php
155
inc/email.php
@@ -10,54 +10,28 @@ require_once 'inc/PHPMailer/SMTP.php';
|
||||
class Email extends PhpObject {
|
||||
|
||||
private $sServName;
|
||||
private $sTemplate;
|
||||
private $sTemplateName;
|
||||
|
||||
/**
|
||||
*
|
||||
* @var Translator[]
|
||||
* Email Template
|
||||
* @var Mask
|
||||
*/
|
||||
private $asTranslators;
|
||||
|
||||
/**
|
||||
*
|
||||
* @var Mask[]
|
||||
*/
|
||||
private $asTemplates;
|
||||
public $oTemplate;
|
||||
|
||||
private $asDests;
|
||||
|
||||
public function __construct($sServName, $sTemplate='') {
|
||||
public function __construct($sServName, $sTemplateName='') {
|
||||
$this->sServName = $sServName;
|
||||
$this->setTemplate($sTemplate);
|
||||
$this->setTemplate($sTemplateName);
|
||||
$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;
|
||||
public function setTemplate($sTemplateName) {
|
||||
$this->sTemplateName = $sTemplateName;
|
||||
$this->oTemplate = new Mask($this->sTemplateName);
|
||||
$this->oTemplate->setTag('local_server', $this->sServName);
|
||||
$this->oTemplate->setTag('live_server', Settings::LIVE_SERVER);
|
||||
$this->oTemplate->setTag('geo_server', Settings::GEO_SERVER);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -69,91 +43,47 @@ class Email extends PhpObject {
|
||||
$this->asDests = $asDests;
|
||||
}
|
||||
|
||||
/*public function send() {
|
||||
$sEOL = "\r\n";
|
||||
public function send() {
|
||||
foreach($this->asDests as $asDest) {
|
||||
$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_FROM, 'Spotty');
|
||||
$oPHPMailer->addReplyTo(Settings::MAIL_FROM, 'Spotty');
|
||||
|
||||
//Message
|
||||
$asTemplate = $this->getTemplate($asDest['language']);
|
||||
$oEmail = $asTemplate['email'];
|
||||
$this->oTemplate->setLanguage($asDest['language'], Spot::DEFAULT_LANG);
|
||||
|
||||
//Unsubscribe Link
|
||||
$sUnsubLink = $this->sServName.'?a=unsubscribe_email&id='.$asDest['id_user'];
|
||||
$oEmail->setTag('unsubscribe_link', $sUnsubLink);
|
||||
|
||||
$this->oTemplate->setTag('unsubscribe_link', htmlspecialchars($sUnsubLink));
|
||||
$oPHPMailer->addCustomHeader('List-Unsubscribe','<mailto:'.Settings::MAIL_FROM.'?subject=unsubscribe>, <'.$sUnsubLink.'>');
|
||||
$oPHPMailer->addCustomHeader('List-Unsubscribe-Post','List-Unsubscribe=One-Click');
|
||||
|
||||
//Email Content
|
||||
$sHtmlMessage = $oEmail->getMask();
|
||||
$sHtmlMessage = $this->oTemplate->getMask();
|
||||
$sPlainMessage = strip_tags(str_replace('<br />', "\n", $sHtmlMessage));
|
||||
|
||||
//Email
|
||||
$iBoundary = uniqid("HTMLEMAIL");
|
||||
$sHeaders =
|
||||
'From: Spotty <spot@lutran.fr>'.$sEOL.
|
||||
'Reply-To: Spotty <spot@lutran.fr>'.$sEOL.
|
||||
'List-Unsubscribe: <mailto:unsubscribe@'.parse_url($this->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;
|
||||
//Recipients
|
||||
$oPHPMailer->addAddress($asDest['email'], $asDest['name']);
|
||||
|
||||
$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);
|
||||
//Content
|
||||
$oPHPMailer->isHTML(true);
|
||||
$oPHPMailer->Subject = $this->oTemplate->getTranslator()->getTranslation($this->sTemplateName.'_subject');
|
||||
$oPHPMailer->Body = $sHtmlMessage;
|
||||
$oPHPMailer->AltBody = $sPlainMessage;
|
||||
|
||||
//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_FROM, 'Spotty');
|
||||
$oPHPMailer->addReplyTo(Settings::MAIL_FROM, '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);
|
||||
$oPHPMailer->addCustomHeader('List-Unsubscribe','<mailto:'.Settings::MAIL_FROM.'?subject=unsubscribe>, <'.$sUnsubLink.'>');
|
||||
$oPHPMailer->addCustomHeader('List-Unsubscribe-Post','List-Unsubscribe=One-Click');
|
||||
|
||||
//Email Content
|
||||
$sHtmlMessage = $oEmail->getMask();
|
||||
$sPlainMessage = strip_tags(str_replace('<br />', "\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) {
|
||||
@@ -161,5 +91,4 @@ class Email extends PhpObject {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user