Seme Email

Seme Email adalah library untuk mengirim email dari Seme Framework. Seme Email memiliki template email HTML untuk konten dinamis html.

Struktur Class

Berikut ini adalah struktur kelas untuk Seme Email.

<?php
Class Seme_Email {
  public $log;

  public function __construct() {}

  public function from($from_email_address[, $name='']): Seme_Email {}

  public function to($to_email_address[, $name='']): Seme_Email {}

  public function subject($title_or_subject_email): Seme_Email {}

  public function text($ascii_text): Seme_Email {}

  public function html($html_content): Seme_Email {}

  public function send(): Seme_Email {}

  public function template($file_template_php): Seme_Email {}

  public function replacer($array_of_string): Seme_Email {}

  public function attachment_add($filepath[, $filename='']): Seme_Email {}

  public function attachment_clear(): Seme_Email {}

  public function getLog(): string {}

  public function preview(): void {}
}

Cara menggunakan

Pertama kita harus memuat pustaka dengan menggunakan pustaka yang dimuat:

$this->lib('seme_email');

Anda dapat menempatkan pemuat perpustakaan di konstruktor pengontrol atau pada setiap metode di pengontrol Anda.

Penggunaan Dasar

Untuk pengunaan library Seme Email ini dapat dilakukan menambahkan beberapa baris kode pada sebuah controller di Seme Framework. Berikut ini adalah contoh dasar penerapan kode Seme Email pada sebuah Controller. Buatlah sebuah file PHP didalam app/controller, beri nama emailregister.php. Kemudian copy-paste kode HTML dibawah ini kedalam file tersebut.

<?php
Class EmailRegister extends \SENE_Controller{
  public function __construct(){
    parent::__construct();
    $this->lib('seme_email');
  }
  public function index(){
    $this->seme_email->flush();
    $this->seme_email->replyto('Support Example Website', 'support@cenah.co.id');
    $this->seme_email->from('noreply@example.com', 'Adry from Example Website');
    $this->seme_email->subject('Registration Successful');
    $this->seme_email->to('agus.setiawan@example.com', 'Agus Setiawan');
    $this->seme_email->text('Thank you for registering on Example website.');
    $this->seme_email->send();

    // opsinal untuk melihat log dari proses kirim email ini
    dd($this->seme_email->getLog());
  }
}

Untuk menjalankan proses kirim email, anda cukup memanggil class ini melalui browser. Contoh: http://localhost/seme_framework/emailregister.

Metode Kelas (Class Methods)

Seme Email memiliki beberapa metode dan properti yang dapat digunakan untuk mengirim email dengan baik.

No Metode Keterangan
1
Seme_Email::from($from_email_address[, $name='']): Seme_Email
Wajib
2
Seme_Email::to($to_email_address[, $name='']): Seme_Email
Wajib
3
Seme_Email::subject($title_or_subject_email): Seme_Email
Wajib
4
Seme_Email::text($ascii_text): Seme_Email
Wajib
5
Seme_Email::html($html_content): Seme_Email
Opsional
6
Seme_Email::send(): Seme_Email
Wajib

From Method

Metode ini wajib untuk menyatakan asal email. Diperlukan dua parameter, parameter pertama adalah email dan parameter kedua adalah nama pengirim.

Subject Method

Metode ini wajib untuk menyatakan judul email.

To Method

Metode ini wajib untuk mendeklarasikan tujuan alamat email. Diperlukan dua parameter, parameter pertama adalah email dan parameter kedua adalah nama pengirim. Dapat dipanggil lebih dari satu kali untuk mengirim beberapa alamat email.

Template Method

Dengan template method, kita bisa membuat template email dengan HTML. Untuk melakukannya masuk ke directory kero/lib/seme_email. Kemudian setelah itu masuk ke directory template, jika belum ada buatlah terlebih dahulu. Setelah itu buat file baru bernama account_register.php. Kemudian isikan kode HTML dibawah ini kedalam file tersebut.

<html>
<body>
<p>Hi {{full_name}},</p>
<p>Thank you for using registering at {{site_name}}.</p>
<p>You can clicking on this link {{dashboard_link}} to go to your dashboard.</p>
</body>
</html>

Pada script HTML di atas, kita dapat melihat kode {{full_name}}. Anda dapat mengganti string ini dengan nama asli melalui skrip PHP dengan menggunakan replacer Method.

Replacer Method

Metode ini memungkinkan penggantian string pada template email dengan pengkodean. Berikut adalah contohnya:

<?php
Class EmailRegister extends \SENE_Controller{
  public function __construct(){
    parent::__construct();
    $this->lib('seme_email');
  }
  public function index(){
    $replacer = array();
    $replacer['site_name'] = 'Example Website';
    $replacer['full_name'] = 'Agus Setiawan';
    $replacer['dashboard_link'] = base_url('dashboard/');

    $this->seme_email->flush();
    $this->seme_email->replyto('Support Example Website', 'support@cenah.co.id');
    $this->seme_email->from('noreply@example.com', 'Adry from Example Website');
    $this->seme_email->subject('Registration Successful');
    $this->seme_email->to('agus.setiawan@example.com', 'Agus Setiawan');
    $this->seme_email->template('account_register');
    $this->seme_email->replacer($replacer);
    $this->seme_email->send();

    // opsinal untuk melihat log dari proses kirim email ini
    dd($this->seme_email->getLog());
  }
}

Jika contoh ini digabungkan dengan template email di atas, Anda dapat mengirim email dengan {{full_name}} diganti dengan Agus Setiawan.

Flush Metode

Gunakan metode ini untuk menghapus nilai dan properti yang telah ditetapkan yang digunakan sebelumnya.

Preview Metode

Gunakan metode ini untuk menampilkan ke layar email template yang telah di proses oleh library Seme Email.


Catatan Khusus

Mohon lebih diperhatikan jika ingin mengirim email dengan mengikuti panduan komunitas untuk penggunaan email. Jika email Anda selalu dikirim ke spam, Anda harus menggunakan domain asli dan email yang benar-benar berfungsi.

Google telah menyelesaikan panduan untuk penggunaan email. Berikut penjelasan singkatnya:

  • Selalu cantumkan Subjek di email.
  • Body atau konten utama email terdiri dari salam, konten utama, dan footer.
  • Hindari lampiran.
  • Untuk tujuan default, selalu gunakan noreply@example.com, sesuaikan example.com dengan domain Anda.
  • Untuk konten email terkait uang, gunakan finance@example.com dan pastikan email aktif.
  • Untuk tujuan pemasaran harap gunakan nama asli pemasaran seperti adry@example.com dan pastikan email aktif dapat dibalas.

Error

Jika terjadi error dengan message:

            Error
            File: C:\xampp\htdocs\sbp\karir\kero\lib\seme_email.php
            Line: 382
            Error: [2] mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
          

Solusi dengan MailToDisk bawaan XAMPP (Windows)

Untuk menggunakan MailToDisk bawaan XAMPP, ikutilah langkah-langkah dibawah ini:

1. Buka oleh Notepad++ file C:\xampp\php\php.ini.

2. Cari ;sendmail_path =, hapus titik koma pada awal sendmail_path.

3. Kemudian isikan nilai pada sendmail_path menjadi sendmail_path ="C:/xampp/mailtodisk/mailtodisk.exe"

4. Setelah itu restart apache-nya, kemudian jalankan scriptnya kembali.

5. Semua email akan tersimpan sebagai file di dalam C:\xampp\mailoutput.

Solusi dengan Postfix (linux dan mac)

Untuk menggunakan Postfix, ikutilah langkah-langkah dibawah ini:

1. install terlebih dahulu postfix.

2. Cari ;sendmail_path =, hapus titik koma pada awal sendmail_path.

3. Kemudian isikan nilai pada sendmail_path menjadi sendmail_path ="sendmail -t -i"

4. Setelah itu restart apache-nya, kemudian jalankan scriptnya kembali.

5. Email akan terkirim selama tidak server tidak diblock oleh provider.