Web Doktoru - 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.
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, 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’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.
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ı"
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 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.
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-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
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!";
}
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 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 ş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
Markdown e-postasını göndermek için aşağıdaki kodu kullanabilirsiniz:
Mail::to('customer@example.com')->send(new OrderShipped());
Laravel’de bildirimler (notifications), e-posta, SMS, Slack, veritabanı gibi farklı kanallar üzerinden kullanıcılara mesaj göndermenizi sağlar.
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.
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!');
}
}
Bildirimi kullanıcıya göndermek için aşağıdaki kodu kullanabilirsiniz:
use App\Notifications\OrderShippedNotification;
$user->notify(new OrderShippedNotification());
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'];
}
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
];
}
Kullanıcının bildirimlerini listelemek için aşağıdaki kodu kullanabilirsiniz:
$user = auth()->user();
$bildirimler = $user->notifications;
Okunmamış bildirimleri almak için aşağıdaki kodu kullanabilirsiniz:
$okunmamisBildirimler = $user->unreadNotifications;
Bir bildirimi okundu olarak işaretlemek için aşağıdaki kodu kullanabilirsiniz:
$bildirim->markAsRead();
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’de Real-Time (Gerçek Zamanlı) Bildirimler Laravel, modern web uygulamalarında gerçek zamanlı bildirimler oluşturmak için güçlü…
Laravel, dosya yükleme ve depolama işlemleri için güçlü bir Storage (Dosya Depolama) mekanizması sunar. Bu mekanizma, yerel…
Laravel’de Çoklu Dil (Localization) Kullanımı: Uygulamanızı Küresel Hale Getirin 🌍 Laravel, modern web uygulamaları için…
Laravel’de Test Driven Development (TDD) ve Test Yazımı: Güvenilir ve Sürdürülebilir Kod Geliştirme Laravel, modern…
Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi Laravel, modern web uygulamalarında belirli…
Laravel Event & Listener Kullanımı: Modüler ve Esnek Uygulama Geliştirme Laravel, modern web uygulamaları geliştirirken…