Laravel ile Mail Ayarlarını Veri Tabanından Çekme
Geliştirdiğimiz projelerin çoğunda Laravel'in bize sunmuş olduğu Mail kütüphanesinden yararlanıyoruz. Örnek verecek olursak yeni üye kayıtlarında, panel içinde bilgilendirme e-postalarında sürekli bir mail kullanma gereksinimi duyuyoruz.
Projelerimizde yeni başlayan arkadaşların çoğu bu işlemi Laravel .env dosyasından yapıyor fakat aslında bu .env dosyası projeniz canlıya atıldığında hiçte mantıklı değil. Kısacası .env bu iş için kullanılacak bir şey değil. Peki ne yapabiliriz?
Projelerimiz de kullanacağımız mail ayarlarını veri tabanından çekerek kullanmalıyız. Bu sayede projemizi canlı ortama attığımızda hem son kullanıcı kendi mail ayarlarını yapabilmeli hem de kullanışlı bir ara yüze sahip olmalıdır.
ADIM 1 : ServiceProvider Oluşturalım
php artisan make:provider MailServiceProvider
Provider bize 2 adet fonksiyon döndürür biz bunlardan register olanını kullanacağız.
ÖNEMLİ : Yöntem içindeki herhangi bir olay dinleyicisini, rotayı veya başka bir işlevselliği asla kaydetmeye çalışmamalısınız
ADIM 2 : Register'ımızı Yazalım
public function register() { if (\Schema::hasTable('mailsms')) { $mail = DB::table('mailsms')->first(); if ($mail) { $config = array( 'driver' => $mail->MAIL_MAILER, 'host' => $mail->MAIL_HOST, 'port' => $mail->MAIL_PORT, 'from' => array('address' => $mail->MAIL_FROM_ADDRESS, 'name' => $mail->MAIL_FROM_NAME), 'encryption' => $mail->MAIL_ENCRYPTION, 'username' => $mail->MAIL_USERNAME, 'password' => $mail->MAIL_PASSWORD, ); Config::set('mail', $config); } } }
NOT : Tablo işlemlerini kafa karışıklılığı olmaması için yazmadım. Env dosyasında ki Mail ile ilgili tüm bilgileri tablonuzda olacak şekilde ayarlamalı ve içine kayıtlı girmelisiniz.
Provider kodlarımızı yazdıktan sonra yapmamız gereken tek şey bu servisimizi config içinde bulunan app dosyamızda göstermek bu sayede projemizi çalıştırdığımızda servisimizi aktif hale getirecek böylece mail ayarlarımızı .env içinden çekmek yerine veri tabanında bulunan mail-settings isimli tablomuzun içinde bulunan verilerle dolduracaktır.
ADIM : 3 Config Altında App Dosyamıza Sağlayıcımızı Ekleyelim
App\Providers\MailConfigServiceProvider::class,
ADIM 4 : Projemizi Ayağa Kaldıralım
php artisan serve
Dilerseniz bir view blade oluşturup benim yapmış olduğum gibi bu işlemi son kullanıcınıza daha kullanışlı bir şekilde sunabilirsiniz.
Eğer yazımı beğendiyseniz paylaşarak destek olabilir ve ya aklınıza takılan soruları Whatsapp ile sorabilirsiniz.