Merih Forum Programlama ve yazılım algoritmalar Genel laravel Laravel 5 ve Sendgrid ile E-posta Gönderimi

ABD Münbiçi bırakır mı ?

ABD, Münbiçin yarısı sizde yarısı bizde kalsın dedi

SON 20 YILDA OSCAR KAZANAN KADINLAR

Son 20 yılda En İyi Kadın Oyuncu kategorisinde Oscar kazanan oyuncuların listesi...

AFRİN HAREKATI

Zeytin Dalı Harekatında teröristlerden temizlenen bölge artıyor

SILKROAD XIAN SERVER

2017 de açılan Xian server ilginç özelliklerde

  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Laravel 5 ve Sendgrid ile E-posta Gönderimi

 
#1

22 Şubat 2016 tarihine kadar projelerimin e-posta gönderimi olanlarının çoğunda e-posta servisi olarak Mandrill kullanmayı tercih ettim. Mandrill bu tarihte deklare ettiği sözleşme değişikliği ile altmış gün içinde ücretli bir Mailchimp hesabın olmayan kullanıcıların hesabını durduracağını bildirdi.
Alternatif olarak bazı projelerimde ise Github Öğrenci Paketi‘nin hediyesi olan Sendrid’i kullandım. Sendgrid bize şu özellikte bir hizmet sunuyor: Öğrenci planı, eğer öğrenci iseniz aylık 15.000 ücretsiz e-posta veriyor (normalde günde 200 ücretsiz e-posta).
Sendgrid ile bir SMTP aracılığı ve 587 portu üzerinden Laravel ile e-posta gönderimi yapacağız, bu ise son derece kolay ve keyifli olacak.
Laravel 5 projenizin app/config/mail.php dosyasını incelediğinizde e-posta gönderimine ilişiklin yapılandırma dosyası için aşağıdakine benzer bir görüntü ile karşılaşacaksınız (makalede az yer kaplaması için yorum satırlarını çıkardım):
Kod:
<?php

return [

   'driver'     => env('MAIL_DRIVER', 'smtp'),
   'host'       => env('MAIL_HOST', 'smtp.mailgun.org'),
   'port'       => env('MAIL_PORT', 587),
   'from'       => ['address' => env('MAIL_FROM'), 'name' => env('MAIL_NAME')],
   'encryption' => env('MAIL_ENCRYPTION', 'tls'),
   'username'   => env('MAIL_USERNAME'),
   'password'   => env('MAIL_PASSWORD'),
   'sendmail'   => '/usr/sbin/sendmail -bs',
   'pretend'    => false,

];

Sendgrid e-posta gönderimi yaparken kullanıcı adımızı ve şifremizi girmeyi gerektirir, ben ise geleneksel olarak şifrelerin dosyalara doğrudan yazılmasını yanlış bulurum, yani en azından açık olarak. Bu münasebetle çok basit bile olsa bir şifreleme ile şifremizi görünür olmaktan alıkoyacağız.
Base64 encode ve decode edilebilir son derece basit bir kripto yöntemidir. Biz burada şifremizi şifreleyecek ve php tarafından açılacak halini Sendgrid’e sunacağız. Öncelikle Base64 Decode and Encode - Online sitesinden ilk kutucuğa Sendgrid şifremizi yazalım ve > ENCODE < butonuna basalım. Ç0kKarma$Lkßir$ifre değişkeni için karşılık olarak w4cwa0thcm1hJExrw59pciRpZnJl değişkenini üretecek. Ardından e-posta yapılandırma dosyanızı aşağıdaki gibi güncelleyin.
Kod:
<?php

return [
   'driver' => 'smtp',
   'host' => 'smtp.sendgrid.net',
   'port' => 587,
   'from' => array('address' => 'gondericiEposta@Adresi.Com', 'name' => 'Gönderici İsmi'),
   'encryption' => 'tls',
   'username' => 'SendGrid Kullanıcı Adınız',
   'password' => base64_decode('w4cwa0thcm1hJExrw59pciRpZnJl'),
   'sendmail' => '/usr/sbin/sendmail -bs',
   'pretend' => false,
];

Laravel standart olarak bu yapılandırma anahtarlarını .env dosyasında alacağını varsayacak şekilde env(‘MAIL_DRIVER’, ‘smtp’) biçiminde ayarlanmıştır. Bu, şu demektir; MAIL_DRIVER değişkeni .env dosyasında tanımlı ise onu tercih et, yoksa smtp olarak tanımla. Biz ise burada bu tip tanımlamayı ezmiş olduk, siz dilerseniz kendinize uygun biçimde yapılandırabilirsiniz.
Sendgrid için gerekli olan tüm parametreleri yapılandırdık, uygulamamız şu anda e-posta gönderimine uygun. Basit bir rota yazarak e-posta gönderelim:
Kod:
Route::get('/eposta', function()
{
   $data = ['ad' => 'Tuana Şeyma', 'soyad' => 'Eldem'];

   Mail::send('emails.gunaydin', $data, function($message) use($data)
   {
       $message->to('tuanaseyma@sinaneldem.com.tr', $data['ad'])
       ->subject('Günaydın Kızım!')
       ->replyTo('sinan@sinaneldem.com.tr', 'Sinan Eldem');
   });
});

Burada Mail sınıfının send metoduna geçtiğimiz ilk parametre kullanılacak görünüm dosyasıdır (view), onu birazdan yapılandıracağız. İkinci parametre $datadizisidir ve bu e-posta görünüm dosyasına veri geçirmek için kullanılır. Üçüncü parametre anonim e-posta nesnesidir, gönderim işlemi burada gerçekleşir. Dördüncü parametre olan use ise tercihe bağlıdır, aşağıda Alıcının İsmiparametresini geçmek için kullandım.
Kod:
$message->to('tuanaseyma@sinaneldem.com.tr', $data['ad'])

E-posta alıcısını tanımladığımız satır budur, ilk parametre Alıcı E-posta Adresiikinici parametre ise tercihe bağlı Alıcı İsmi‘dir.
Kod:
->subject('Günaydın Kızım!');

Satırı ile e-postamıza bir konu tanımlarız.
Son olarak e-posta göndericisi ile yanıtlayacak adresin farklı olması durumunda tercih edilecek replyTo seçeneğini de burada tanımlarız. Tercihe bağlıdır.
Kod:
->replyTo('sinan@sinaneldem.com.tr', 'Sinan Eldem');

Burada replyTo metoduna geçtiğimiz Gönderici İsmi tercihe bağlıdır.
Buraya kadar her şey tamam, şimdi e-posta gönderimi için görünüm dosyamızı oluşturalım.
resources/views/emails/ dizininde gunaydin.blade.php dosyasını oluşturup içeriğini aşağıdaki gibi ayarlayın:
Kod:
<!doctype html>
<html>
   <head>
       <meta charset="utf-8">
       <title>E-posta Denemesi</title>
   </head>

   <body>
       Günaydın Sevgili {{ $ad }} {{ $soyad }},
       <br>
            Gününün aydın olmasını dilerim.
       <br>
       Sevgiler,
       <br>
       -Baban
   </body>
</html>

Göreceğiniz üzere $data dizisi ile gönderdiğimiz değişkenler buraya doğrudan aktarıldı.
Artık projemiz e-posta gönderimine hazır, tarayıcınızı http://projenizinadr.esi/eposta adresine yönlendirin ve bekleyin. Bu işlem internet bağlantı hızınıza bağlı olarak birkaç saniye sürebilir.
Haydi e-posta istemcisini açıp mesajınızı denetleyin:
sendGridTest.png



Ara
Cevapla


[-]
Hızlı Cevap

İnsan Doğrulama:
Aşağıda görünen onay kutusunu işaretleyiniz. Bu işlem otomatik spam kayıtları önlemek için kullanılır.

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Laravel Framework public Dizin İsmini Değiştirme sempatik141 0 627 09-07-2017, Saat: 11:10
Son Yorum: sempatik141
  laravel valet mysql kullanıcı oluşturma sempatik141 0 593 09-07-2017, Saat: 11:07
Son Yorum: sempatik141
  Laravel Nedir ? sempatik141 0 605 09-07-2017, Saat: 09:52
Son Yorum: sempatik141

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Konuyu Okuyanlar:
1 Ziyaretçi

   
Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2018 MyBB Group.  



Merih Forum® bilgi paylaşım platformu. 2015-2018 Tüm hakları saklıdır.