Menambahkan Template Email ke PHPMailer

Contoh Design Template Email Yang akan dikirim dari PHPMailer


PHPMailer adalah pustaka kode untuk mengirim email dengan aman dan mudah melalui kode PHP dari server web. Mengirim email secara langsung dengan kode PHP memerlukan pemahaman tingkat tinggi terhadap standar protokol SMTP dan masalah terkait serta kerentanan tentang Injeksi email untuk pengiriman spam – Wikipedia.

Banyak sekali tutorial cara kirim email dengan PHPMailer, tapi rata – rata tutorialnya standar dan tidak ada variasi terutama dari segi design email yang dikirim seperti yang dijelaskan pada tutorial sebelumnya mengenai  Cara Setting PHPMailer Untuk Kirim Email , karena dalam banyak tutorial hanya membahas sekedar cara kirim emailnya saja, dimana tidak ada design khusus pada saat di definisikan didalam body email. Oleh karena itu dalam kesempatan ini saya ingin memberikan sedikit contoh kode bagaimana mengirim email menggunakan PHPMailer dengan design template yang menarik


Menambahkan Template Email ke PHPMailer

Dalam contoh ini Saya menggunakan mailtrap.io untuk percobaan mengirim emailnya, silahkan Anda terlebih dahulu membuat akun di mailtrap. Selanjutnya untuk design html templatenya, Anda bisa buat atau mengunduhnya beefree.io 

  1. Download dulu Library PHPMailer
  2. Siapkan design email Anda
  3. Buat sebuah helper untuk membantu mengirim email seperti berikut ini
      
      <?php
    /**
     * 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, $isHTML = true) {
    		$mail = new PHPMailer\PHPMailer\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 = 2525;
    		$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();
    	}
    }
    ?>
    
    
    
      
      

Menambahkan template email ke Body PHPMailer

Langkah selanjutnya Adalah Anda perlu memanggil helper yang sudah dibuat sebelumnya beserta Library dari PHPMailer. Untuk dapat mengirim email dengan design template yang menarik Anda bisa mendefinisikan kode secara keseluruhan seperti berikut :


<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require_once 'library/phpmailer/src/PHPMailer.php';
require_once 'library/phpmailer/src/SMTP.php';
require_once 'library/phpmailer/src/Exception.php';
require_once 'app/core/MailSender.php';

$mailer = new MailSender('smtp_host', 'smtp_username', 'smtp_pass');
$mailer->setTemplateURL('themes/email_template.html'); //path template email anda

$mailer->compose(array(
                'name' => 'Root93.co.id',
                 'pass' => '123456',
                 'title'=>'Kirim Email PHPMailer Dengan Design Template Menarik',
                                  
               ));

                                
            $sended = $mailer->send(
            array('from@email.com', 'From name'),
                    'to@email.com',
                     'subject'
                 );

           if($sended)
           {
             echo "email terkirim";
            }
            else
            {
               echo "email gagal dikirim";
             }
?>

Keterangan 

$mailer->compose merupakan data yang akan diparsing dalam email_templates.html, sehingga nanti untuk mencetak nilai variabel dalam email_templates.html, Anda cukup mendefinisikannya seperti berikut {{nama}} {{pass}} {{title}}


0 Response to "Menambahkan Template Email ke PHPMailer"

Post a Comment

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin