Laravel Custom Message-ID Swift Mailer
Posted on
Laravel membawa swift mailer untuk fitur kirim email. Satu hal yang ngeselin dari Swift Mailer itu bagian message-ID, dia akan generate message-ID: [email protected]>
. Imbasnya ketika melewati rspamd dia akan kena symbol MID_RHS_NOT_FQDN
, memang tidak serta merta di flag sebagai spam, tapi cukup kesel aja pas lihat log. Haha. Solusinya, custom message-ID swift mailer, bagian domainnya yg di custom supaya jadi fqdn. Jadi hasil akhirnya akan berupa message-ID: [email protected].
Pertama, edit file config/mail.php
tambahin:
'domain' => 'sumarsono.com',
Kedua, bikin listener
baru pakai artisan
:
php artisan make:listener -e 'Illuminate\Mail\Events\MessageSending' MessageSendingListener
Ketiga, edit listener
yang tadi dibuat menjadi seperti berikut ini:
<?php
/**
* Set the domain part in the message-id generated by Swift Mailer
*/
namespace App\Listeners;
use Illuminate\Mail\Events\MessageSending;
use Swift_Mime_IdGenerator;
class MessageSendingListener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param MessageSending $event
* @return void
*/
public function handle(MessageSending $event)
{
$event->message->setId((new Swift_Mime_IdGenerator(config('mail.domain')))->generateId());
}
}
Keempat, daftarkan listener
ke app/Providers/EventServiceProvider
:
protected $listen = [
// [...]
\Illuminate\Mail\Events\MessageSending::class => [
\App\Listeners\MessageSendingListener::class,
],
];
Selesai, coba kirim email maka message-ID sudah berubah menjadi Message-ID: [email protected]>
dan rspamd udah gak komplain lagi.
Cool~