Article Details

Photo by Mikaela Wiedenhoff on Unsplash Photo by Mikaela Wiedenhoff on Unsplash

Laravel SMTP Connection Check Before Sending Email

Finsa Nurpandi

Jun 22, 2025 14:36

Terkadang jika kita memiliki aplikasi atau sistem yang memiliki layanan email atau notifikasi melalui email, jika menggunakan Laravel, email akan langsung dikirim sesuai dengan konfigurasi email yang kita punya. Kendala nya, bagaimana jika ternyata sistem memiliki masalah pada layanan email tersebut? Biasanya, sistem akan menampilkan pesan error dengan pesan utama "error SMTP connection". Lalu bagaimana cara menangani hal ini? agar setidaknya error tersebut tidak muncul, tapi diganti dengan notifikasi gagal kirim email.

Pada Laravel, email akan langsung dikirim. Sehingga tidak ada melakukan pengecekan terlebih dahulu terhadap credentials dari SMTP yang kita gunakan. Jika menggunakan code block try and catch pun, email tetap akan dikirim dan pesan error muncul karena koneksinya gagal. Bagaimana jika yang kita inginkan adalah, sistem melakukan pengecekan terhadap credentials SMTP terlebih dahulu sebelum mengirimkan emailnya. Jika otentikasinya gagal, maka akan muncul notifikasi error tanpa menampilkan halaman error nya.

Kita bisa menggunakan class EsmtpTransport dari Symfony, tanpa perlu install apapun di Laravel. Lalu, panggil konfigurasi email yang terdapat pada file .env. Untuk melakukan pengecekan, kita menggunakan block try catch. Jika $transport->start(); berhasil, maka email berhasil dikirim. Jika gagal, akan mengirimkan notifikasi. Untuk kode nya seperti di bawah ini.

use Symfony\Component\Mailer\Transport\SMTP\EsmtpTransport;

try {
     $transport = new EsmtpTransport(
          env('MAIL_HOST'),
          env('MAIL_PORT'),
          env('MAIL_ENCRYPTION')
     );

     $transport->setUsername(env('MAIL_USERNAME'));
     $transport->setPassword(env('MAIL_PASSWORD'));

     $transport->start();
     
     return TRUE; // sending email
} catch (\Exception $e) {
     return FALSE; // show error notification
}

Mungkin itu, sedikit tips yang bisa dibagi. Mudah-mudahan bisa bermanfaat.

Salam.


Referensi:

https://github.com/spatie/laravel-health/discussions/153

0 Comment

Leave a Comment