Laravel’de Mail Gönderme ve Bildirimler 📩

Web Doktoru - Laravel’de Mail Gönderme ve Bildirimler 📩

Laravel’de Mail Gönderme ve Bildirimler 📩

İçindekiler

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 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('[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.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('[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 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. 

Picture of Web Doktoru
Web Doktoru
Matematikçi, Adli Bilişim Uzmanı, Bil. Yük. Müh. Full Stack Developer
İlginizi Çekebilir
Web Doktoru - Laravel’de Real-Time (Gerçek Zamanlı) Bildirimler

Laravel’de Real-Time (Gerçek Zamanlı) Bildirimler

Laravel’de Real-Time (Gerçek Zamanlı) Bildirimler Laravel, modern web uygulamalarında gerçek zamanlı bildirimler oluşturmak için güçlü araçlar sunar. WebSockets, Pusher, Laravel Echo ve Broadcasting gibi teknolojiler

Web Doktoru - Laravel’de Mail Gönderme ve Bildirimler 📩

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,

Whatsapp ile mesaj göndermek için tıklayın

Telefon ile sadece 09:00 - 18:00 saatleri arası ulaşabilirsiniz.