Laravel Mail Gönderme İşlemleri

Merhaba

Bu yazımızda bir Laravel projesi içerisinde Mail yapısı nasıl kullanılır ve nasıl sistem içerisinden e-posta gönderilir başlıklarını ele alacağız. Bu işlemler için Laravel içerisinde mevcut olan mail yapısını kullanacağız.

Laravel 8 Mail için resmi doküman sayfasına şuradan gidebilirsiniz.

Laravel ile e-posta gönderim işlemini üç adımda tamamlayacağız.

  • Mail yapılandırmaları
  • Mailables oluşturma ve basit bir view.blade
  • E-Posta gönderimi için basit bir controller

Öncellikle mail yapılandırma ayarlarımızı yapmaya başlıyoruz. Yapılandırma işlemleri için config/mail.php ve Laravel ana dizini içerisinde bulunan .env dosyaları üzerinde çalışma yapıyoruz.

Laravel .env dosyası içerisine aşağıda bulunan yapılandırma bilgilerini ekliyoruz.

Mail Yapılandırma Parametreleri

  • MAIL_MAILER                = İletişim protokolü
  • MAIL_HOST                   = Kullanılan mail servisinin hostu
    • GMail için smtp.gmail.com
    • Yandex için smtp.yandex.com.tr
  • MAIL_PORT                   = Smtp için port 587 veya 493
  • MAIL_USERNAME           = e-posta adresi
  • MAIL_PASSWORD           = e-posta adresi şifresi
  • MAIL_ENCRYPTION         = SSL veya TLS
  • MAIL_FROM_ADDRESS   = e-posta gönderildiğinde gösterilecek adres
  • MAIL_FROM_NAME        = e-posta gönderildiğinde gösterilecek isim

Bu bilgileri .env dosyamıza ekledikten sonra diğer varsa diğer ayarlarımız için config/mail.php dosyamıza gidiyoruz. Bu dosya bir Laravel projesi oluşturulduğu zaman varsayılan olarak eklenerek gelir.

Varsayılan Ayarlar

Bizim için varsayılan olan şu kısım yeterlidir. Ancak API tabanlı mail sürücüleri kullanacaksanız varsayılan olarak gelen mailers kısmını kullanacağınız sürücüye göre güncellemeniz gereklidir.

'mailers' => [
        // ...
    ]

E-Posta için API tabanlı sürücülere bazı örnekler

  • Mailgun
  • Postmark
  • Ses

Bu tarz bir sürücü kullanım durumunda mail.php dosyamıza şöyle bir ekleme yapmamız lazım. Bu örnek Ses sürücüsü için bir örnektir.

Not : Tüm API sürücüleri Guzzle http kütüphanesine ihtiyaç duyar.

'ses' => [
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
    'options' => [
        'ConfigurationSetName' => 'MyConfigurationSet',
        'Tags' => [
            ['Name' => 'foo', 'Value' => 'bar'],
        ],
    ],
],

Şimdi mail yapılandırma ayarlarımızı tamamladık. E-Posta gönderimi için bir mail oluşturuyoruz. Laravel e-posta gönderme sınıfları app/Mail dizini içerisinde oluşturulur. Mail oluşturma için aşağıdaki komutu kullanıyoruz.

php artisan make:mail HosGeldin

Oluşturulan HosGeldin sınıfını açtığımızda build fonksiyonunu göreceğiz. Bu fonksiyon içerisinde e-posta gönderme, yapılandırma ve derleme işlemleri yapılır. Laravel e-posta gönderme işlemlerinde html dosyası kullanılarak e-posta gönderimi yapar. E-Posta alıcısına göstermek istediğiniz tüm bilgiler bu html dosyasına yazılır. Aşağıda göreceğiniz sınıf içerisinde tüm işlemler yapılmış durumda.

public $aliciIsmi,$mesaj;
public function __construct($aliciIsmi,$mesaj){
	$this->aliciIsmi = $aliciIsmi;
	$this->mesaj = $mesaj;
}
public function build(){
    return $this->from('example@example.com')// gönderici mail belirtiyoruz
                ->view('emails.hos_geldin'); // hangi view gönderilecek
}

E-Posta için kullanılan hos_geldin.blade dosyasının içeriği şu şekildedir.

Merhaba {{$aliciIsmi}} | {{$mesaj}}

Son adım olan controller kısmında ise basit bir fonksiyon ile e-postamızı gönderiyoruz.

class HosGeldinController extends Controller
{
    public function index()
    {
        $mail =new HosGeldin("Berk CAN","Aramıza Hoş Geldin"); 
        Mail::to("nrkdrk@gmail.com")->send($mail);
    }
}

Önce mail nesnemizden içerikleri ileterek yeni bir nesne elde ediyoruz. Daha sonra Laravel Mail::to ile hedef e-posta adresini ve içeriği ekleyerek e-postamızı gönderiyoruz. Mail::to fonksiyonlarından send fonksiyonu içerisinde string bir mesaj da gönderebilirsiniz.

Diğer yazılarımızda görüşmek üzere iyi geliştirmeler dilerim

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir