summaryrefslogtreecommitdiff
path: root/public/app/extends/SendMail_service.php
diff options
context:
space:
mode:
authorGeorge Halkiadakis <gchalkiadakis@sklavenitis.co.gr>2023-04-27 20:15:02 +0300
committerGeorge Halkiadakis <gchalkiadakis@sklavenitis.co.gr>2023-04-27 20:15:02 +0300
commit463139601c046a5201cb8a73473f8fe5c568b760 (patch)
treee174bed994e3939c1d47f4fb2ae402bdfc1a77f9 /public/app/extends/SendMail_service.php
parentb52e052bd3741c1ddf1bdaa43079ba5a9eafc8bd (diff)
downloadclassroom-463139601c046a5201cb8a73473f8fe5c568b760.tar.gz
classroom-463139601c046a5201cb8a73473f8fe5c568b760.tar.bz2
classroom-463139601c046a5201cb8a73473f8fe5c568b760.zip
rearangment completed; now anything is simplel
Diffstat (limited to 'public/app/extends/SendMail_service.php')
-rw-r--r--public/app/extends/SendMail_service.php212
1 files changed, 212 insertions, 0 deletions
diff --git a/public/app/extends/SendMail_service.php b/public/app/extends/SendMail_service.php
new file mode 100644
index 0000000..c717e61
--- /dev/null
+++ b/public/app/extends/SendMail_service.php
@@ -0,0 +1,212 @@
+<?php
+namespace app\extends;
+
+use PHPMailer\PHPMailer\PHPMailer;
+use PHPMailer\PHPMailer\SMTP;
+use PHPMailer\PHPMailer\Exception;
+
+
+class SendMail_service
+{
+ /** send_activation_code
+ *
+ * construct the envelope = [
+ * email => 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' => "Χαίρετε,<br>
+ το παρόν αυτοποιημένο email σάς έχει σταλεί
+ γιατί έχει γίνει αίτημα εγγραφής σας στο Classroom.<br>
+ <br>
+ Όνομα επαφής: <b>". $activator['name'] ."</b><br>
+ Email : <b>". $activator['email'] ."</b><br>
+ <br>
+ Για να ενεργοποιήσετε την πρόσβασή σας στο site
+ θα πρέπει ακολουθήσετε τον παρακάτω σύνδεσμο:
+ <a href=\"". $activation_url ."\">". $activation_url ."</a>.
+ <br>
+ <br>
+ Μετά την ενεργοποίηση θα έχετε πρόσσβαση
+ στο περιεχόμενο του site.<br>
+ Μην απαντήσετε στο 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
+
+ * -----------------------------------------------------------------------------
+ */