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=[email protected]
MAIL_PASSWORD=your-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=[email protected]
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=[email protected]
MAIL_PASSWORD=your-app-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=[email protected]
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=[email protected]
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 WelcomeMailBu 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('[email protected]')
                    ->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.orderBu 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') }}
@endcomponentMail Gönderme
Markdown e-postasını göndermek için aşağıdaki kodu kullanabilirsiniz:
Mail::to('[email protected]')->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 OrderShippedNotificationBu 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 migrateDaha 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.
Laravel Eğitimi Konular
- Laravel Nedir ve Neden Kullanılmalı?
- Laravel Kurulumu (Composer ile Adım Adım Rehber)
- Laravel Proje Yapısı ve MVC Mimarisi
- Laravel Routing ve Controller Kullanımı
- Laravel Middleware Kullanımı
- API isteklerinde middleware kullanımı
- Laravel Migration ve Seeder Kullanımı
- Laravel Factory ve Faker ile Test Verisi Üretme
- Laravel’de API Kullanımı ve Token Bazlı Authentication
- Laravel Rol ve Yetkilendirme İşlemleri
- Laravel’de Cache ve Performans Optimizasyonu
- Laravel’de Queue (Kuyruk) Kullanımı ve Arka Plan İşlemleri
- Laravel Event & Listener Kullanımı
- Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi
- Laravel’de Test Driven Development (TDD) ve Test Yazımı
 
				 
															 
				


