<?php use Slim\Views\Twig; use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; class Mailer { public static function sendMail($body) { $config = new Settings(); $settings = $config->getSettings(); $mailConfig = $settings["email"]; $mail = new PHPMailer(); switch ($body["mail_task"]) { case "TESTING": $html = "<h1>Hi! It's Fipamo!</h1><br>" . "<strong>It's just a test</strong><br>" . $body["content"]; $member = Session::get("member"); $mail->addAddress($member["email"], ""); //pull email address from current user $mail->Subject = "A test email"; break; case "SEND_SECRET": $html = "<h1>Hi! It's Fipamo!</h1><br>" . "<strong>This is your secret key.</strong><br><br>" . "<h3>" . $body["secret"] . "</h3>" . "<br> Use this key to reset your password."; $mail->addAddress($body["email"], ""); //pull email address from current user $mail->Subject = "Shhhh! It's a secret!"; break; default: return $result = [ "type" => "noMailService", "message" => "Mail task is undefined. What are you doing??", ]; break; } //set values based on current active protocol switch ($mailConfig["active"]) { case "option-smtp": $mail->setFrom($mailConfig["smtp"]["email"], "System Email"); $mail->Host = "playvicio.us"; $mail->Username = $mailConfig["smtp"]["email"]; $mail->Password = $mailConfig["smtp"]["password"]; break; case "option-mg": $mail->setFrom($mailConfig["mailgun"]["domain"], "No Reply"); $mail->Host = "smtp.mailgun.org"; $mail->Username = $mailConfig["mailgun"]["domain"]; $mail->Password = $mailConfig["mailgun"]["key"]; break; default: //no mail service return $result = [ "type" => "noMailService", "message" => "Mail is not configured. Handle that.", ]; break; } $mail->Body = $html; $mail->IsHTML(true); $mail->isSMTP(); $mail->SMTPAuth = true; $mail->SMTPSecure = "ssl"; $mail->Port = 465; // Uncomment for debug info //$mail->SMTPDebug = 4; /* Finally send the mail. */ try { $mail->send(); $result = ["type" => "mailSent", "message" => "Message Away!"]; } catch (Exception $e) { //echo $e->errorMessage(); $result = [ "type" => "mailNotSent", "message" => "Message Not Away!", "error" => $e->errorMessage(), ]; } return $result; } }