Merhaba arkadaşlar, bugün sizlerle Laravel'de e-posta gönderme işlemlerini ve SMTP ile Mailgun entegrasyonlarını detaylı şekilde inceleyeceğiz. Laravel, e-posta gönderme işlemleri için son derece kullanışlı bir sistem sunar. Gelin bu konuyu birlikte keşfedelim.
Laravel'de e-posta göndermek için öncelikle .env
dosyamızı düzenlememiz gerekiyor. İşte temel SMTP ayarları:
MAIL_MAILER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=ornek@gmail.com MAIL_PASSWORD=şifreniz MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=ornek@gmail.com MAIL_FROM_NAME="Uygulama Adı"
Bu ayarları yaptıktan sonra, Laravel'in sunduğu basit arayüzü kullanarak e-posta gönderebiliriz.
use Illuminate\Support\Facades\Mail; use App\Mail\BilgilendirmeMaili; Mail::to('alici@example.com') ->cc(['kopya1@example.com', 'kopya2@example.com']) ->bcc('gizli@example.com') ->send(new BilgilendirmeMaili($veri));
Burada BilgilendirmeMaili
adında bir mailable sınıfı kullanıyoruz. Bu sınıfı oluşturmak için:
php artisan make:mail BilgilendirmeMaili
Oluşturduğumuz mailable sınıfını şu şekilde düzenleyebiliriz:
namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class BilgilendirmeMaili extends Mailable { use Queueable, SerializesModels; public $veri; public function __construct($veri) { $this->veri = $veri; } public function build() { return $this->subject('Önemli Bilgilendirme') ->view('emails.bilgilendirme') ->attach(storage_path('app/public/dosya.pdf'), [ 'as' => 'belge.pdf', 'mime' => 'application/pdf', ]); } }
Mailgun kullanmak için öncelikle paketi yükleyelim:
composer require guzzlehttp/guzzle
Ardından .env
dosyamızı güncelleyelim:
MAIL_MAILER=mailgun MAILGUN_DOMAIN=sandbox12345.mailgun.org MAILGUN_SECRET=key-1234567890 MAILGUN_ENDPOINT=api.mailgun.net
Mailgun dashboard'ından alacağınız bilgilerle bu ayarları doldurmalısınız.
Yoğun trafikli uygulamalarda e-postaları queue'ya almak performans açısından kritik önem taşır:
Mail::to('alici@example.com') ->queue(new BilgilendirmeMaili($veri));
Queue worker'ı başlatmak için:
php artisan queue:work
php artisan make:mail BilgilendirmeMaili --markdown=emails.bilgilendirme
Bu komut hem mailable sınıfını hem de markdown template'ini oluşturacaktır. Önizlemek için:
Route::get('/mail-preview', function () { return new App\Mail\BilgilendirmeMaili($ornekVeri); });
Testlerinizde e-postaların gerçekten gönderilmesini engelleyebilirsiniz:
// TestCase içinde Mail::fake(); // Test metodunda Mail::assertSent(BilgilendirmeMaili::class, function ($mail) { return $mail->hasTo('alici@example.com'); });
Laravel'in e-posta gönderme sistemi, hem basit kullanımı hem de gelişmiş özellikleri sayesinde ihtiyaçlarınıza mükemmel şekilde cevap verecektir. SMTP ile temel ihtiyaçlarınızı karşılayabilir, Mailgun gibi servislerle profesyonel çözümler üretebilirsiniz. Bir sonraki yazımızda Laravel'de API Rate Limiting konusunu ele alacağız. Görüşmek üzere!