Helper PHPMailer Untuk Kirim Email Dengan Tampilan Menarik
Helper umumnya digunakan untuk membantu seorang programmer mempermudah fungsi tertentu agar ketika dibutuhkan kamu hanya tinggal menuliskan parameter yang lebih pendek. Sehingga tentu helper ini akan membuat waktu yang dimiliki menjadi lebih efisien. Dalam kasus kali ini saya akan membagikan sebuah Helper yang sering saya gunakan untuk mengirim email dengan tampilan / template yang menarik.
Dibawah ini merupakan contoh Helper yang bisa kalian gunakan untuk mengirim email menggunakan PHPMailer dengan tampilan menarik
<?php
//simpan lalu beri nama MailSender.php
namespace Yournamespace; //sesuaikan dengan namespace kalian masing - masing
use PHPMailer\PHPMailer\PHPMailer; //panggil php mailer, pastikan kalian instalnya pakai composer
/**
* MailSender
* Per utilitzar PHPMailer de forma molt més senzilla i
* utilitzant plantilles HTML.
*
* Dependencies:
* - PHPMailer
*
* @version 0.24
* @license MIT
* @author Mario M. <gameofender@gmail.com>
*
*/
class MailSender {
var $mailer;
var $template;
var $body = '';
var $body_alt = '';
public function __construct($host, $username, $password, $port, $isHTML = true) {
$mail = new PHPMailer();
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = $host; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = $username; // SMTP username
$mail->Password = $password; // SMTP password
$mail->isHTML($isHTML); // Set email format to HTML
$mail->CharSet = 'UTF-8';
$mail->Port = $port;
$this->mailer = $mail;
}
/**
* Template .html path
* @param String $path
*/
public function setTemplateURL($path) {
$this->template = $path;
$this->body = file_get_contents($this->template);
}
public function setBodyAlt($string) {
$this->body_alt = $string;
}
/**
* Remplace mail variables inside template with {{var}} notation.
* @return Array
*/
public function compose($args) {
if(is_array($args)) {
foreach($args as $key => $value){
if(!is_array($value)) $this->body = preg_replace('/{{'.$key.'}}/', $value, $this->body);
}
}
}
/**
* Send!
* @param [type] $from [description]
* @param [type] $to [description]
* @param [type] $subject [description]
* @return [type] [description]
*/
function send($from, $to, $subject) {
$this->mailer->Subject = $subject;
$this->mailer->Body = $this->body;
if(!empty($this->body_alt)) $this->mailer->AltBody = $this->body_alt;
if(is_array($from)) $this->mailer->setFrom($from[0], $from[1]);
else $this->mailer->setFrom($from);
if(!is_array($to)) $this->mailer->addAddress($to);
else {
foreach ($to as $email => $name) {
$this->mailer->addBcc($email, $name);
}
}
return $this->mailer->send();
}
}
?> Penggunaan
Kalian hanya perlu memanggil Class MailSender.php pada file yang nantinya betugas untuk mengirim email. Contoh penggunaan bisa dilihat sebagai berikut :
<?php
//////////////////////////////////////////////////////////////////////////////////////
// How to use:
$mailer = new MailSender('localhost', 'smtp_user', 'smtp_password');
// Set .html template
$mailer->setTemplateURL('views/mails/message.html');
// Remplace strings patterns {{var}} on HTML template
// ex.: `<h2>{{name}}</h2>` ===> `<h2>Mario M.</h2>`
$mailer->compose(array(
name => 'Mario M.',
sex => 'Mr.',
email => 'gameofender@gmail.com'
));
// Send email with from, to and Subject.
$sended = $mailer->send(
array('from@email.com', 'From name'),
'to@email.com',
'subject'
);
/////////////////////////////////////////////////////////////////////////////////////////
?>Pada bagian berikut :
$mailer->setTemplateURL('views/mails/message.html');Kalian bisa simpan atau taruh path dari template html email kalian. Kemudian selanjutnya pada bagian berikut merupakan nilai - nilai variabel yang mungkin ingin kalian sertakan kedalam isi email
$mailer->compose(array(
name => 'Mario M.',
sex => 'Mr.',
email => 'gameofender@gmail.com'
));Nanti pada template email kalian. Untuk mengakses data array diatas, kalian cukup mengakses menggunakan tag seperti berikut {{name}} atau {{email}}
Baca juga :