Neler yeni

Hoşgeldiniz Ziyaretçi Linkleri giriş yapmadan göremezsin

Sitemize kaydolarak daha faydalı bir şekilde faydalanabilir, sorunlardan destek alabilir, paylaşılan dosyaları indirebilirsiniz.

Şimdi kayıt ol

Sendgrid ile E-posta Gönderimi

Sendgrid ile E-posta Gönderimi

Disconnect

Üye
Fenerbahçe
Üye
22
290
14 Ağustos 2017
5
Yaş
32
Kocaeli
Siteye Git
#1
Mandrill yakın zamanda 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
Bu linki görmek için izniniz yok Giriş yap veya üye ol.
‘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:

PHP:
<?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
Bu linki görmek için izniniz yok Giriş yap veya üye ol.
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.

PHP:
<?php

return [
    'driver' => 'smtp',
    'host' => 'smtp.sendgrid.net',
    'port' => 587,
    'from' => array('address' => '[email protected]', '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:

PHP:
Route::get('/eposta', function()
{
    $data = ['ad' => 'Devrim Deniz', 'soyad' => 'Ayhan'];

    Mail::send('emails.gunaydin', $data, function($message) use($data)
    {
        $message->to('[email protected]', $data['ad'])
        ->subject('Günaydın Oğlum!')
        ->replyTo('[email protected]', 'O. Ayhan');
    });
});
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.

PHP:
$message->to('[email protected]', $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.

PHP:
->subject('Günaydın Oğlum!');
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.

PHP:
->replyTo('[email protected]', 'O. Ayhan');
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:

PHP:
<!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ı
Bu linki görmek için izniniz yok Giriş yap veya üye ol.
adresine yönlendirin ve bekleyin. Bu işlem internet bağlantı hızınıza bağlı olarak birkaç saniye sürebilir.
 
Üst Alt