Avoid PHPMailer boiler plate repetition

This commit is contained in:
2021-08-30 21:27:07 +02:00
parent 33d5a927c1
commit 0300d8b577

View File

@@ -44,7 +44,6 @@ class Email extends PhpObject {
}
public function send() {
foreach($this->asDests as $asDest) {
$oPHPMailer = new PHPMailer(true);
//Server settings
@@ -61,6 +60,7 @@ class Email extends PhpObject {
$oPHPMailer->setFrom(Settings::MAIL_FROM, 'Spotty');
$oPHPMailer->addReplyTo(Settings::MAIL_FROM, 'Spotty');
foreach($this->asDests as $asDest) {
//Message
$this->oTemplate->setLanguage($asDest['language'], Spot::DEFAULT_LANG);
$this->oTemplate->setTimezone($asDest['timezone']);
@@ -77,7 +77,12 @@ class Email extends PhpObject {
$sPlainMessage = strip_tags(str_replace('<br />', "\n", $sHtmlMessage));
//Recipients
try {
$oPHPMailer->addAddress($asDest['email'], $asDest['name']);
} catch (Exception $oError) {
$this->addError('Invalid address skipped: '.$asDest['email'].' ('.$asDest['name'].')');
continue;
}
//Content
$oPHPMailer->isHTML(true);
@@ -85,13 +90,18 @@ class Email extends PhpObject {
$oPHPMailer->Body = $sHtmlMessage;
$oPHPMailer->AltBody = $sPlainMessage;
$bSuccess = true;
try {
$oPHPMailer->send();
$bSuccess = $bSuccess && $oPHPMailer->send();
}
catch (Exception $e) {
catch (Exception $oError) {
$this->addError('Message could not be sent to "'.$asDest['email'].'". Mailer Error: '.$oPHPMailer->ErrorInfo);
$oPHPMailer->getSMTPInstance()->reset();
}
$oPHPMailer->clearAddresses();
$oPHPMailer->clearCustomHeaders();
}
return $bSuccess;
}
private static function getTimeZoneCity($sTimeZone) {