Cara Mengirim Email menggunakan CodeIgniter

Email sangat penting dalam aplikasi web. Saat pengguna mendaftar, kita mungkin ingin mengirimi mereka email untuk memverifikasi alamat email mereka dan mengizinkan pengguna mengonfirmasi langganan. Kita juga menggunakan email untuk mereset kata sandi yang terlupakan, mengirim faktur dan tanda terima ke pelanggan, dll. CodeIgniter memudahkan kita untuk mengirim email dari aplikasi kita menggunakan berbagai opsi.

CodeIgniter memiliki pustaka email bawaan yang dapat kita gunakan saat mengirim email.

Konfigurasi Email CodeIgniter

Kita perlu memiliki tempat terpusat untuk mengelola pengaturan email. CodeIgniter tidak menyediakan berkas konfigurasi untuk email, jadi kita harus membuatnya sendiri.

Buat file email.php di direktori application/config

Tambahkan kode berikut ke email.php

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

$config = array(
    'protocol' => 'smtp', // 'mail', 'sendmail', or 'smtp'
    'smtp_host' => 'smtp.example.com', 
    'smtp_port' => 465,
    'smtp_user' => 'no-reply@example.com',
    'smtp_pass' => '12345!',
    'smtp_crypto' => 'ssl', //can be 'ssl' or 'tls' for example
    'mailtype' => 'text', //plaintext 'text' mails or 'html'
    'smtp_timeout' => '4', //in seconds
    'charset' => 'iso-8859-1',
    'wordwrap' => TRUE
);

SINI,

  • 'protocol' => 'smtp', menentukan protokol yang ingin Anda gunakan saat mengirim email. Ini bisa berupa pengaturan smtp Gmail atau pengaturan smtp dari host Anda
  • 'smtp_host' => 'smtp.example.com', menentukan host smtp. Misalnya, jika Anda ingin menggunakan Gmail, maka Anda akan memiliki alamat seperti smtp.gmail.com
  • 'smtp_port' => 465, port terbuka pada host smtp yang ditentukan yang telah dikonfigurasi untuk email smtp
  • 'smtp_user' => 'no-reply@example.com', alamat email yang akan digunakan sebagai pengirim saat mengirim email. Ini harus berupa alamat email yang valid yang ada di server
  • 'smtp_pass' => '12345!', kata sandi untuk email pengguna smtp yang ditentukan
  • 'smtp_crypto' => 'ssl', menentukan metode enkripsi yang akan digunakan yaitu ssl, tls dll.
  • 'email type' => 'text', mengatur jenis email yang akan digunakan. Bisa berupa teks biasa atau HTML tergantung kebutuhan Anda.
  • 'smtp_timeout' => '4', menentukan waktu dalam detik yang harus berlalu ketika mencoba menyambung ke host sebelum pengecualian batas waktu dilempar.
  • 'charset' => 'iso-8859-1', mendefinisikan set karakter yang akan digunakan saat mengirim email.
  • 'wordwrap' => TRUE disetel ke TRUE lalu word-wrap diaktifkan. Jika disetel ke FALSE, maka word-wrap tidak diaktifkan

Note: untuk mengirim email ke kantor, Anda harus memberikan parameter konfigurasi yang valid. Parameter tiruan tidak akan dapat mengirim email.

Tampilan Email CodeIgniter

Di bagian ini, kita akan membuat tampilan yang akan mengirimkan email ke penerima.

Buat direktori email baru di aplikasi/tampilan

Buat file baru contact.php aplikasi/views/email

Tambahkan kode berikut ke application/views/email/contact.php

<!DOCTYPE html>
<html>
    <head>
        <title>CodeIgniter Send Email</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div>
            <h3>Use the form below to send email</h3>
            <form method="post" action="<?=base_url('email')?>" enctype="multipart/form-data">
                <input type="email" id="to" name="to" placeholder="Receiver Email">
                <br><br>
                <input type="text" id="subject" name="subject" placeholder="Subject">
                <br><br>
                <textarea rows="6" id="message" name="message" placeholder="Type your message here"></textarea>
                <br><br>
                <input type="submit" value="Send Email" />
            </form>
        </div>
    </body>
</html>

SINI,

  • Kami memiliki formulir HTML dasar yang menerima email, subjek, dan pesan lalu meneruskan parameter ke rute email.

Pengontrol Email CodeIgniter

Sekarang mari kita buat pengontrol yang akan menangani pengiriman email

Buat file baru EmailController.php di application/controllers/EmailController.php

Tambahkan kode berikut ke EmailController.php

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class EmailController extends CI_Controller {

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

        $this->load->helper('url');
    }

    public function index() {
        $this->load->view('email/contact');
    }

    function send() {
        $this->load->config('email');
        $this->load->library('email');
        
        $from = $this->config->item('smtp_user');
        $to = $this->input->post('to');
        $subject = $this->input->post('subject');
        $message = $this->input->post('message');

        $this->email->set_newline("\r\n");
        $this->email->from($from);
        $this->email->to($to);
        $this->email->subject($subject);
        $this->email->message($message);

        if ($this->email->send()) {
            echo 'Your Email has successfully been sent.';
        } else {
            show_error($this->email->print_debugger());
        }
    }
}

SINI,

  • class EmailController extends CI_Controller {…} mendefinisikan pengontrol email yang memperluas pengontrol CodeIgniter induk.
  • public function __construct() {…} mendefinisikan konstruktor anak yang memanggil metode konstruktor induk.
  • public function index() {…} mendefinisikan metode indeks yang menampilkan formulir kontak
  • fungsi send() {…} mendefinisikan metode yang mengirim email
    • $this->load->config('email'); memuat pengaturan konfigurasi email
    • $this->load->library('email'); memuat pustaka email
    • $from = $this->config->item('smtp_user'); mendapatkan ID pengirim dari berkas konfigurasi email yang kita tentukan.
    • $ke = $ini->masukan->posting('ke'); mendapat nilai to dari formulir yang dikirimkan
    • $subject = $this->input->post('subject'); mengatur email yang dikirim dari formulir
    • $message = $this->input->post('message'); mengatur pesan email dari formulir
    • $this->email->set_newline(“\r\n”); mendefinisikan karakter baris baru untuk email
    • $this->email->from($from); menetapkan alamat email pengirim
    • $this->email->to($to); menetapkan alamat email penerima
    • $this->email->subject($subject); menetapkan subjek email
    • $this->email->message($message); mengatur pesan email
    • if ($this->email->send()) {…} mencoba mengirim email. Jika email berhasil dikirim, maka pesan Your Email has successful been sent akan dicetak, jika tidak informasi debug akan dicetak mengenai apa yang mungkin salah.

Sekarang mari kita tentukan rute email

Rute Email

Tambahkan rute berikut ke application/config/routes.php

$route['send-email'] = 'EmailController';
$route['email'] = 'EmailController/send';

Sekarang kita dapat memuat formulir kontak di browser web

Mari kita mulai server PHP bawaan

Buka terminal/baris perintah dan telusuri ke root aplikasi Anda. Dalam kasus saya, root terletak di drive C:\Sites\ci-app

cd C:\Sites\ci-app

mulai server menggunakan perintah berikut

php -S localhost:3000

Muat URL berikut di peramban web Anda: http://localhost:3000/send-email

Anda seharusnya dapat melihat formulir berikut

Rute Email

Masukkan alamat email penerima, subjek, dan pesan email, lalu klik Kirim Email. Jika konfigurasi email Anda sudah diatur dengan benar, maka Anda akan melihat pesan yang berhasil.

Kesimpulan

Pustaka email bawaan memudahkan kita mengirim email dengan kode minimal. Pustaka ini juga sangat fleksibel dalam artian Anda dapat mengonfigurasinya untuk memenuhi kebutuhan Anda.