user email * name => user full name * subject => subject * body => email message body * ] * * then send the email; * * @param $activator (array): [ * email => user email, * name => user full name, * code => activation code * ] * * @return success_starus (boolean) * * TODO: * check for email templating: * + https://stackoverflow.com/questions/2391171/how-to-get-output-from-local-script-in-php * + https://stackoverflow.com/questions/171318/how-do-i-capture-php-output-into-a-variable */ public static function send_activation_code($activator) { $activation_url = SITE_URL ."/account/activate?ticket=". $activator['code']; $envelope = [ 'email' => $activator['email'], 'name' => $activator['name'], 'subject' => 'Εγγραφή στο Classroom', 'body' => "Χαίρετε,
το παρόν αυτοποιημένο email σάς έχει σταλεί γιατί έχει γίνει αίτημα εγγραφής σας στο Classroom.

Όνομα επαφής: ". $activator['name'] ."
Email : ". $activator['email'] ."

Για να ενεργοποιήσετε την πρόσβασή σας στο site θα πρέπει ακολουθήσετε τον παρακάτω σύνδεσμο: ". $activation_url .".

Μετά την ενεργοποίηση θα έχετε πρόσσβαση στο περιεχόμενο του site.
Μην απαντήσετε στο email, δεν υπάρχει φυσική επαφή η οποία να λαμβάνει τυχόν replies." ]; switch (DEFAULT_MAIL_SERVICE) { case 'mailjet': $reply = self::send_mailjet($envelope); break; case 'phpMailer': $reply = self::send_phpMailer($envelope); break; } return $reply; } /** send phpMailer * * send email using phpMailer class; * optional SMTP server configuration; * * @param $envelope * @return success_starus (boolean) */ public static function send_phpMailer($envelope) { $mail = new PHPMailer(); # // setup smpt $mail->SMTPDebug = 3; $mail->IsSMTP(); $mail->Host = MAIL_HOST; # $mail->SMPTAuth = false; $mail->SMTPSecure = MAIL_ENCRYPTION; # // $mail->Protocol = 'mail'; $mail->Mailer = MAIL_MAILER; $mail->Port = MAIL_PORT; $mail->Username = MAIL_USERNAME; $mail->Password = MAIL_PASSWORD; // setup format $mail->CharSet = 'utf-8'; $mail->IsHTML(true); // setup THE mail // --- -- -- - - - // It's important not to use the submitter's address as the from address // as it's forgery, which will cause your messages to fail SPF checks. // Use an address in your own domain as the from address; // put the submitter's address in a reply-to $mail->setFrom(NO_REPLY_EMAIL, MAIL_FROM_NAME); $mail->addAddress($envelope['email'], $envelope['name']); $mail->addReplyTo(REPLY_TO_EMAIL, MAIL_FROM_NAME); $mail->Subject = $envelope['subject']; $mail->Body = $envelope['body']; return (!$mail->send()) ? false : true; } /** send_mailjet * * send email using CURL mail-relay of Mailjet * * @param $envelope * @return success_starus (boolean) */ public static function send_mailjet($envelope) { $body = [ 'Messages' => [ [ 'From' => [ 'Email' => REPLY_TO_EMAIL, 'Name' => MAIL_FROM_NAME ], 'To' => [ [ 'Email' => $envelope['email'], 'Name' => $envelope['name'] ] ], 'Subject' => $envelope['subject'], 'HTMLPart' => $envelope['body'] ] ] ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://api.mailjet.com/v3.1/send"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json') ); curl_setopt( $ch, CURLOPT_USERPWD, MAILJET_APIKEY. ':'. MAILJET_SECRET ); $server_output = curl_exec($ch); curl_close ($ch); $response = json_decode($server_output); return ($response->Messages[0]->Status == 'success'); } } /** NOTE: * ----------------------------------------------------------------------------- * (brainstorming) * Optimization per concept alternative technologies --- -- -- - - - ## Session File Session Database Session Redis Session Memcached Session --- ## Cache File Cache Database Cache Redis Cache Memcashed Cache --- ## Log File Log Database Log Log event to Slack Log event to Email * ----------------------------------------------------------------------------- */