Cara menggunakan phpmailer codeigniter

Cara menggunakan phpmailer codeigniter

Membuat fitur kirim email dengan codeigniter dan phpmailer - Hello, postingan ini merupakan postingan perbaikan dari artikel sebelumnya. Dikarenakan artikel sebelumnya banyak yang komplen karena banyak errornya, selain hal itu code yang di gunakan bisa di bilang sudah ketinggalan, makanya kali ini saya ingin coba meregenerasi artikel tersebut.

Postingan sebelumnya : Mengirim-email-dengan-php-codeigniter.

Spesifikasi alat-alat yang saya pakai :

  • Xampp 1.8.0 (php 5.4.4)
  • Php framework codeigniter 3.0
  • Library PhpMailer (download disini)

Library
Setelah selesai mengkonfigurasi, sekarang kita akan meletakan library Phpmailer yang sudah di download sebelumnya.

  • Pertama buka file RAR PhpMailer yang sudah di download.

Cara menggunakan phpmailer codeigniter

  • (Lihat pada gambar di atas) , Copy file class.phpmailer.php , class.smtp.php dan PHPMailerAutoload.php ke folder libraries yang ada pada CI di direktori application/libraries .Untuk lebih jelas lihat gambar di bawah.

Cara menggunakan phpmailer codeigniter

Controllers

Untuk sample, silahkan salin function di bawah ini



public function mailku() {
 require_once(APPPATH.'libraries/PHPMailerAutoload.php');

 $mail = new PHPMailer;

 $mail->isSMTP();
 $mail->Host = 'mail.domain.com'; //nama "domain" ganti sesuai nama domain anda. misal domain anda satuan.com maka bentuk host mailnya adalah mail.satuan.com
 $mail->SMTPAuth = true;
 $mail->Username = ''; //email dari domain anda, untuk cara pembuatan email akan di bahas di bawah
 $mail->Password = 'sangat rahasia'; //masukan kata sandi
 $mail->Port = 587; //port tidak usah di ubah, biarkan 587

 $mail->setFrom('', 'xyz'); //email pengirim
 $mail->addAddress('', 'penerima'); //email penerima
 $mail->addReplyTo('', 'apa');
 $mail->isHTML(true);

        ///atur pesan email disini
 $mail->Subject = 'Here is the subject';
 $mail->Body    = 'This is the HTML message body in bold!';
 $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

 if(!$mail->send()) {
  echo 'Message could not be sent.';
  echo 'Mailer Error: ' . $mail->ErrorInfo;
 } else {
  echo 'Message has been sent';
 }
}
Untuk keterangan sudah saya sertakan pada sample function di atas

Cara Membuat Email Di Cpanel

  • Login ke cpanel
  • Masuk ke menu account

Cara menggunakan phpmailer codeigniter

  • Isi nama email dan password

Cara menggunakan phpmailer codeigniter

  • Klik Create Email
Note : Tidak akan bisa jalan jika di jalankan di localhost, test di server langsung. JIka sudah di test, jangan lupa cek di spam kalau di inbox tidak ada.

Pengaturan untuk kamu yang ingin menggunakan smtp google:


$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = '';
$mail->Password = 'abcdefg'; //masukan kata sandi

$mail->SMTPSecure = 'TLS'; 
$mail->Port = 587; //port tidak usah di ubah, biarkan 587

$mail->setFrom('', 'xyz'); //email pengirim
$mail->addAddress('', 'penerima'); //email penerima
$mail->addReplyTo('', 'apa');
$mail->isHTML(true);


$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body in bold!';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send())
{
 echo 'Message could not be sent.';
 echo 'Mailer Error: ' . $mail->ErrorInfo;
}
else
{
 echo 'Message has been sent';
}

Membuat Fitur Kirim Email pada CodeIgniter – Fitur ini digunakan untuk berkomunikasi antara user satu dengan yang lainnya maupun antara user dengan sistem aplikasi itu sendiri.

Salah satu cara supaya email yang dikirimkan dari website dapat diterima dengan baik dan tidak ditandai sebagai spam adalah dengan melakukan setting autentifikasi SMTP.

Untuk membuat fitur pengiriman email pada CodeIgniter kita bisa memanfaatkan SMTP Gmail.

Dengan memanfaatkan SMTP Gmail, sebenarnya kita menggunakan server email milik Google untuk mengirimkan email langsung dari aplikasi yang kita buat sehingga email tersebut lebih cepat sampai ke penerima.

Tutorial kirim email dengan SMTP Gmail CodeIgniter

Pada panduan kali ini, saya akan menjelaskan CodeIgniter email SMTP script menggunakan library SMTP PHPMailer.

1. Persiapan Project CodeIgniter

Disini saya menginstall Codeigniter dengan nama project “codeignitermail”.

2. Download library SMTP PHPMailer CodeIgniter

Silahkan download pada repository github yang bisa Anda jumpai pada link berikut:

https://github.com/bennyekop/SMTPphpMailerCITemplate

Repo tersebut merupakan template penggunaan library SMTP PHPMailer. Anda bebas melakukan fork/clone dan modifikasi sesuai kebutuhan.

3. Menambahkan Library PHPMailer

Buka file project yang sudah di download dari repository github di atas.

Lalu copy seluruh isi phpmailer yang terdapat pada direktori libraries, pindahakan ke dalam folder libraries project Anda, dapat dilihat pada gambar di bawah ini:

Cara menggunakan phpmailer codeigniter
Library SMTP PHPMailer

4. Mengaktifkan Google Security App password

Pastikan untuk mengaktifkan pengaturan Google Security pada akun Gmail Anda. Caranya, login terlebih dahulu ke akun google lalu masuk ke halaman Google Account, lalu klik Security.

Scroll ke bawah sampai Anda menemukan bagian App password seperti gambar di bawah ini:

Cara menggunakan phpmailer codeigniter
Google App Password

Silahkan Anda klik App password. Selanjutnya di bagian Select app pilih Other (Custom name).

Cara menggunakan phpmailer codeigniter
Select App Name

Selanjutnya akan muncul isian nama aplikasi, isi dengan nama Laravel. Lalu klik Generate.

Cara menggunakan phpmailer codeigniter
Generate App Password

Anda akan mendapatkan 16 karakter password.

Cara menggunakan phpmailer codeigniter
App Password for Your Device

Password tersebut yang akan kita gunakan untuk configurasi controller KirimEmail.php di bagian code $mail->Password. Controller KirimEmail.php yang akan kita buat di tahap selanjutnya.

5. Membuat Controller

Membuat controller dengan nama KirimEmail.php pada direktori: application/controllers/KirimEmail.php

Isi dari file controller KirimEmail.php adalah sebagai berikut:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

class KirimEmail extends CI_Controller {

 public function __construct()
 {
   parent::__construct(); 

   require APPPATH.'libraries/phpmailer/src/Exception.php';
   require APPPATH.'libraries/phpmailer/src/PHPMailer.php';
   require APPPATH.'libraries/phpmailer/src/SMTP.php';
 }

 public function index()
 {
   $this->load->view('form_email');
 }

 public function send()
 {
   // PHPMailer object
   $response = false;
   $mail = new PHPMailer();

   // SMTP configuration
   $mail->isSMTP();
   $mail->Host     = 'smtp.gmail.com';
   $mail->SMTPAuth = true;
   $mail->Username = ''; // user email anda
   $mail->Password = 'mkapiuqignjzcyoz'; // diisi dengan App Password yang sudah di generate
   $mail->SMTPSecure = 'ssl';
   $mail->Port     = 465;

   $mail->setFrom('', 'AYONGODING.COM'); // user email anda
   $mail->addReplyTo('', ''); //user email anda

   // Email subject
   $mail->Subject = 'SMTP CodeIgniter | ayongoding.com'; //subject email

   // Add a recipient
   $mail->addAddress($this->input->post('email')); //email tujuan pengiriman email

   // Set email format to HTML
   $mail->isHTML(true);

   // Email body content
   $mailContent = "<p>Hallo <b>".$this->input->post('nama')."</b> berikut ini adalah komentar Anda:</p>
   <table>
     <tr>
       <td>Nama</td>
       <td>:</td>
       <td>".$this->input->post('nama')."</td>
     </tr>
     <tr>
       <td>Website</td>
       <td>:</td>
       <td>".$this->input->post('website')."</td>
     </tr>
     <tr>
       <td>Komentar</td>
       <td>:</td>
       <td>".$this->input->post('komentar')."</td>
     </tr>
   </table>
   <p>Terimakasih <b>".$this->input->post('nama')."</b> telah memberi komentar.</p>"; // isi email
   $mail->Body = $mailContent;

   // Send email
   if(!$mail->send()){
     echo 'Message could not be sent.';
     echo 'Mailer Error: ' . $mail->ErrorInfo;
   }else{
     echo 'Message has been sent';
   }
 }
}

6. Membuat File View

Membuat file view untuk kirim email dengan nama formemail.php pada direktori: application/views/formemail.php

File view ini akan menampilkan form untuk isian beberapa data dan kemana email akan dikirim.

Kodenya sebagai berikut:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Tutorial SMTP CodeIgniter | ayongoding.com</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
</head>
<body>
  <div class="container">
    <div class="row">
      <div class="col-md-6">
        <h3>Tutorial SMTP CodeIgniter | Tinggalkan Balasan</h3>
        <form method="post" action="kirimemail/send">
          <div class="form-group">
            <label>Nama Lengkap</label>
            <input class="form-control" type="text" name="nama">
          </div>
          <div class="form-group">
            <label>Website</label>
            <input class="form-control" type="text" name="website">
          </div>
          <div class="form-group">
            <label>Komentar</label>
            <textarea class="form-control" name="komentar" rows="4"></textarea>
          </div>
          <div class="form-group">
            <label>Alamat Email Saya</label>
            <input class="form-control" type="text" name="email">
          </div>
          <div class="text-right">
            <button type="submit" class="btn btn-primary">Kirim ke Email Saya</button>
          </div>
        </form>
      </div>
    </div>
  </div>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</body>
</html>

7. Mengirim Email

Sekarang coba jalankan project codeignitr Anda dengan mengakses url: http://localhost/codeignitermail/index.php/kirimemail

Cara menggunakan phpmailer codeigniter
Form kirim email CodeIgniter

Isikan data seperti gambar di atas kemudian klik tombol Kirim email.

Maka email akan dikirim ke alamat email yang Anda inputkan seperti gambar di bawah ini:

Cara menggunakan phpmailer codeigniter
SMTP PHPMailer CodeIgniter

Sekian tutorial Membuat Fitur Kirim Email pada CodeIgniter, artikel ini adalah sebagai dokumentasi pribadi saya sehingga bahasa dan penulisannya dibuat singkat.

Semoga bisa bermanfaat untuk Anda.