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:
toTujuan pengiriman email, boleh lebih dari satu penerima dimana masing-masing penerima memiliki propertinamedanemail. Nilai ini juga akan diteruskan ke view jika ada dengan nama variabelto.ccSama sepertito, tapi akan dikirim dengan penerimaan sebagaicc.bccSama sepertito, tapi akan dikirim dengan penerimaan sebagaibcc.
subjectSubject email, nilai ini menerima string(:to.email)atau(:to.name)yang akan diganti dengan properti akun penerimanto.emailatauto.name.attachmentAdalah attachment file yang akan dikirim bersamaan dengan email. Masing-masing file harus memiliki propertifileyang adalah absolute path ke file tersebut, dannameyang adalah nama file tersebut.textBerisi konten email tanpa HTML untuk dukungan email reader yang belum mendukung html. Nilai ini juga akan diset sebagai konten HTML jika propertiviewtidak diset.viewBerisi informasi view yang akan di-render untuk menggenerasi konten html email. Properti ini memiliki dua sub-properti yaitu:pathPath nama view yang akan digunakan yang ada di folder./theme/mail.paramsParameter key-value pair yang akan digunakan sebagai parameter variabel untuk menggenerasi view html.