Laravel

Laravel’de Mail Gönderme ve Bildirimler

Laravel’de Mail Gönderme ve Bildirimler

Laravel, modern web uygulamaları geliştirirken e-posta gönderimi ve bildirim sistemleri gibi ihtiyaçları kolayca karşılamak için güçlü araçlar sunar. Bu yazıda, Laravel’de e-posta gönderme işlemlerini ve bildirim sistemini adım adım ele alacağız. Laravel’in sunduğu Mail ve Notification sınıfları sayesinde, SMTP, Mailgun, SES, Postmark gibi farklı e-posta servisleriyle entegrasyon oldukça basittir. Gelin, bu süreçleri birlikte inceleyelim.

1️⃣ Mail Servisinin Yapılandırılması

Laravel’de e-posta göndermek için öncelikle .env dosyasında e-posta ayarlarınızı yapılandırmanız gerekiyor. Bu ayarlar, uygulamanızın hangi e-posta servisini kullanacağını ve nasıl bağlantı kuracağını belirler.

SMTP ile Mail Göndermek

SMTP, en yaygın kullanılan e-posta gönderme protokollerinden biridir. Laravel’de SMTP kullanmak için .env dosyanıza aşağıdaki gibi ayarları ekleyebilirsiniz:

MAIL_MAILER=smtp
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_USERNAME=your-email@example.com
MAIL_PASSWORD=your-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=no-reply@example.com
MAIL_FROM_NAME="Laravel Uygulaması"

Bu ayarlar, uygulamanızın belirtilen SMTP sunucusu üzerinden e-posta göndermesini sağlar.

Gmail SMTP Kullanımı

Gmail’in SMTP servisini kullanmak isterseniz, .env dosyanızı aşağıdaki gibi güncelleyebilirsiniz:

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=your-email@gmail.com
MAIL_FROM_NAME="Laravel Uygulaması"

Gmail kullanırken dikkat etmeniz gereken nokta, uygulama şifresi (app password) kullanmanız gerektiğidir. Bu, güvenlik nedeniyle zorunlu bir adımdır.

Local Geliştirme İçin Mailtrap Kullanımı

Geliştirme sürecinde e-postaları test etmek için Mailtrap gibi servisler oldukça kullanışlıdır. Mailtrap, e-postaları gerçekten göndermek yerine sanal bir ortamda test etmenizi sağlar. Mailtrap kullanmak için .env dosyanızı aşağıdaki gibi ayarlayabilirsiniz:

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your-mailtrap-username
MAIL_PASSWORD=your-mailtrap-password
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=no-reply@example.com
MAIL_FROM_NAME="Laravel Uygulaması"

2️⃣ Mail Sınıfı ile E-Posta Gönderme

Laravel’de e-posta göndermek için Mailable sınıfı kullanılır. Bu sınıf, e-postalarınızı oluşturmanızı ve göndermenizi sağlar.

Yeni Bir Mailable Sınıfı Oluşturma

Yeni bir e-posta şablonu oluşturmak için aşağıdaki Artisan komutunu kullanabilirsiniz:

php artisan make:mail WelcomeMail

Bu komut, app/Mail/WelcomeMail.php dosyasını oluşturur. Bu dosya, e-postanın içeriğini ve yapısını belirler.

Mail İçeriğini Oluşturma

Oluşturduğunuz WelcomeMail sınıfında, e-postanın içeriğini ve gönderici bilgilerini ayarlayabilirsiniz. Örneğin:

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class WelcomeMail extends Mailable
{
    use Queueable, SerializesModels;

    public $user;

    public function __construct($user)
    {
        $this->user = $user;
    }

    public function build()
    {
        return $this->from('no-reply@example.com')
                    ->subject('Hoş Geldiniz!')
                    ->view('emails.welcome');
    }
}

Bu örnekte, kullanıcıya hoş geldin mesajı içeren bir e-posta gönderilmektedir.

E-Posta İçeriği için Blade Şablonu Oluşturma

E-postanın içeriğini oluşturmak için Blade şablonlarını kullanabilirsiniz. Örneğin, resources/views/emails/welcome.blade.php dosyasını oluşturup aşağıdaki içeriği ekleyebilirsiniz:

<!DOCTYPE html>
<html>
<head>
    <title>Hoş Geldiniz</title>
</head>
<body>
    <h1>Merhaba {{ $user->name }},</h1>
    <p>Laravel uygulamamıza hoş geldiniz!</p>
</body>
</html>

Run HTML

Mail Gönderme İşlemi

E-postayı göndermek için aşağıdaki kodu kullanabilirsiniz:

use App\Mail\WelcomeMail;
use Illuminate\Support\Facades\Mail;

public function sendMail()
{
    $user = auth()->user();
    Mail::to($user->email)->send(new WelcomeMail($user));

    return "E-posta gönderildi!";
}

3️⃣ Markdown Destekli Mail Kullanımı

Laravel, e-posta şablonları için Markdown desteği de sunar. Markdown, e-postalarınızı daha hızlı ve etkili bir şekilde oluşturmanızı sağlar.

Markdown Destekli Mail Oluşturma

Markdown destekli bir e-posta oluşturmak için aşağıdaki komutu kullanabilirsiniz:

php artisan make:mail OrderShipped --markdown=emails.order

Bu komut, resources/views/emails/order.blade.php dosyasını oluşturur.

Markdown E-Posta Dosyası

Markdown e-posta şablonu aşağıdaki gibi olabilir:

@component('mail::message')
# Siparişiniz Kargoya Verildi

Merhaba, siparişiniz kargoya verildi. Takip numaranız: **123456789**.

@component('mail::button', ['url' => 'https://kargo-takip.com'])
Siparişimi Takip Et
@endcomponent

Teşekkürler,<br>
{{ config('app.name') }}
@endcomponent

Mail Gönderme

Markdown e-postasını göndermek için aşağıdaki kodu kullanabilirsiniz:

Mail::to('customer@example.com')->send(new OrderShipped());

4️⃣ Bildirim Sistemi (Notifications)

Laravel’de bildirimler (notifications), e-posta, SMS, Slack, veritabanı gibi farklı kanallar üzerinden kullanıcılara mesaj göndermenizi sağlar.

Yeni Bir Notification Oluşturma

Yeni bir bildirim oluşturmak için aşağıdaki komutu kullanabilirsiniz:

php artisan make:notification OrderShippedNotification

Bu komut, app/Notifications/OrderShippedNotification.php dosyasını oluşturur.

Notification İçeriği

Bildirim içeriğini aşağıdaki gibi oluşturabilirsiniz:

namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;

class OrderShippedNotification extends Notification
{
    use Queueable;

    public function via($notifiable)
    {
        return ['mail'];
    }

    public function toMail($notifiable)
    {
        return (new MailMessage)
            ->subject('Siparişiniz Kargoya Verildi')
            ->greeting('Merhaba!')
            ->line('Siparişiniz başarıyla kargoya verildi.')
            ->action('Siparişi Takip Et', url('/siparis-takip'))
            ->line('Teşekkür ederiz!');
    }
}

Kullanıcıya Bildirim Gönderme

Bildirimi kullanıcıya göndermek için aşağıdaki kodu kullanabilirsiniz:

use App\Notifications\OrderShippedNotification;

$user->notify(new OrderShippedNotification());

Birden Fazla Kanal Üzerinden Bildirim Gönderme

Eğer bildirimleri birden fazla kanal üzerinden göndermek isterseniz, via metodunu aşağıdaki gibi güncelleyebilirsiniz:

public function via($notifiable)
{
    return ['mail', 'database'];
}

Veritabanında Bildirimleri Kaydetme

Bildirimleri veritabanında saklamak için öncelikle notifications tablosunu oluşturmanız gerekiyor:

php artisan notifications:table
php artisan migrate

Daha sonra, bildirimleri veritabanına kaydetmek için toDatabase metodunu kullanabilirsiniz:

public function toDatabase($notifiable)
{
    return [
        'message' => 'Siparişiniz kargoya verildi!',
        'order_id' => 12345
    ];
}

Bildirimleri Kullanıcı Panelinde Listeleme

Kullanıcının bildirimlerini listelemek için aşağıdaki kodu kullanabilirsiniz:

$user = auth()->user();
$bildirimler = $user->notifications;

Okunmamış Bildirimleri Getirme

Okunmamış bildirimleri almak için aşağıdaki kodu kullanabilirsiniz:

$okunmamisBildirimler = $user->unreadNotifications;

Bildirimi Okundu Olarak İşaretleme

Bir bildirimi okundu olarak işaretlemek için aşağıdaki kodu kullanabilirsiniz:

$bildirim->markAsRead();

Sonuç

Laravel, e-posta gönderme ve bildirim sistemleri konusunda oldukça esnek ve güçlü bir yapı sunar. Bu yazıda, SMTP ile e-posta gönderme, Mailable sınıfı kullanarak e-posta tasarlama, Markdown destekli e-posta şablonları oluşturma ve bildirim sistemi kullanımı gibi temel konuları ele aldık. Laravel’in sunduğu bu araçlar sayesinde, kullanıcılarınıza etkili ve hızlı bir şekilde ulaşabilirsiniz. 

Web Doktoru

Matematikçi, Adli Bilişim Uzmanı, Bil. Yük. Müh. Full Stack Developer

Son Gönderiler

Mobil Uyumlu Web Tasarım Rehberi: Responsive Design ile Kullanıcı Deneyimini Mükemmelleştirin

Web trafiğinin %70'inden fazlası artık mobil cihazlardan geliyor. Google'ın mobil öncelikli indekslemesi (mobile-first indexing) 2026'da tam bir…

9 Haziran 2026

WordPress Bakım Hizmeti Neden Gerekli? Site Sahiplerinin Yapmaması Gereken 8 Hata

WordPress siteniz canlıya alındıktan sonra iş bitmiyor asıl iş o zaman başlıyor. Pek çok işletme…

5 Haziran 2026

Mobil Uygulama mı Web Uygulaması mı? İşletmeniz İçin Doğru Tercih Rehberi

İşletmeniz için dijital bir çözüm geliştirmek istediğinizde, karşılaşacağınız ilk soru genellikle budur: "Mobil uygulama mı…

3 Haziran 2026

WordPress Site Hız ve Performans Optimizasyonu: Sayfa Yüklenme Süresini 3 Saniyenin Altına İndirin

Web sitesi hızı, 2026'da sadece bir teknik detay değil — doğrudan iş sonuçlarını etkileyen kritik…

1 Haziran 2026

Sosyal Medya Pazarlama Rehberi 2026: Platformlara Göre Strateji ve Büyüme Taktikleri

Sosyal medya, 2026 itibarıyla 5.2 milyar aktif kullanıcıya ulaşmış durumda. Türkiye'de ise 65 milyondan fazla…

29 Mayıs 2026

İçerik Pazarlama Stratejileri 2026: Dönüşüm Oranını Artıran 10 Adım

"İçerik kraldır" diyerek başlamak bu noktada klasik kaçabilir ama gerçek değişmiyor: doğru içerik, doğru kişilere,…

27 Mayıs 2026