Adalah module penengah untuk mengirimkan email. Modul ini tidak bisa mengirimkan email sendiri, dibutuhkan module sender yang akan menangani proses pengiriman email.
Instalasi
Jalankan perintah di bawah di folder aplikasi:
mim app install lib-mail
Konfigurasi
Tambahkan konfigurasi seperti di bawah pada konfigurasi modul untuk mendaftarkan email sender.
return [
'libMail' => [
'handler' => 'Namespace\\Library\\Sender'
]
];
Sender
Buatkan sebuat class yang mengimplementasikan interface LibMail\Iface\Sender
yang
bertugas mengirimkan email. Class tersebut harus memiliki method sebagai berikut:
static function send(array $options): bool;
Parameter options
akan dikirim dalam bentuk final sebagai berikut:
$options = [
'to' => [
'name' => 'Receiver Name',
'email' => 'receiver@mail',
'cc' => [ // optional
[
'name' => 'CC Receiver Name',
'email' => 'cc.receiver@mail'
],
// ...
],
'bcc' => [ // optional
[
'name' => 'BCC Receiver Name',
'email' => 'bcc.receiver@mail'
],
// ...
]
],
'subject' => 'Email Subject',
'attachment' => [ // optional
[
'file' => 'absolute/path/to/file.txt',
'name' => 'file.txt'
]
// ...
],
'text' => 'Standar text content email without HTML',
'html' => '<strong>Standar html content email with HTML</strong>'
];
static function lastError(): ?string;
Penggunaan
Module ini mendaftarkan satu library dengan nama LibMail\Library\Mail
yang bisa
digunakan untuk mengirim email sebagai berikut:
use LibMail\Library\Mail;
$options = [
'to' => [
[
'name' => 'Receiver Name',
'email' => 'receiver@mail',
'cc' => [ // optional
[
'name' => 'CC Receiver Name',
'email' => 'cc.receiver@mail'
],
// ...
],
'bcc' => [ // optional
[
'name' => 'BCC Receiver Name',
'email' => 'bcc.receiver@mail'
],
// ...
]
],
// ...
],
'subject' => 'Email Subject',
'attachment' => [ // optional
[
'file' => 'absolute/path/to/file.txt',
'name' => 'file.txt'
]
// ...
],
'text' => 'Standar text content email without HTML',
'view' => [ // optional
'path' => 'path/to/view/file',
'params' => [ /* ... */ ]
]
];
$result = Mail::send($options);
if(!$result)
print_r( Mail::lastError() );
Keterangan dari masing-masing nilai opsi di atas adalah sebagai berikut:
to
Tujuan pengiriman email, boleh lebih dari satu penerima dimana masing-masing penerima memiliki propertiname
danemail
. Nilai ini juga akan diteruskan ke view jika ada dengan nama variabelto
.cc
Sama sepertito
, tapi akan dikirim dengan penerimaan sebagaicc
.bcc
Sama sepertito
, tapi akan dikirim dengan penerimaan sebagaibcc
.
subject
Subject email, nilai ini menerima string(:to.email)
atau(:to.name)
yang akan diganti dengan properti akun penerimanto.email
atauto.name
.attachment
Adalah attachment file yang akan dikirim bersamaan dengan email. Masing-masing file harus memiliki propertifile
yang adalah absolute path ke file tersebut, danname
yang adalah nama file tersebut.text
Berisi konten email tanpa HTML untuk dukungan email reader yang belum mendukung html. Nilai ini juga akan diset sebagai konten HTML jika propertiview
tidak diset.view
Berisi informasi view yang akan di-render untuk menggenerasi konten html email. Properti ini memiliki dua sub-properti yaitu:path
Path nama view yang akan digunakan yang ada di folder./theme/mail
.params
Parameter key-value pair yang akan digunakan sebagai parameter variabel untuk menggenerasi view html.