Laravel ve Kampanya Monitörü ile günlük bir e-posta göndermek

İşte Laravel Haber'de, yeni içerikle güncel kalmanın birçok yolunu sunuyoruz. Otomatik paylaşımdan, tüm sosyal medya kanallarına, salt okunur bir Telegram kanalına, haftalık bir bültene ve geçen Mart ayında, her gün e-posta özetini sunmaya başladık.

Günlük e-postayı göndermek için Laravel zamanlayıcı ve Kampanya Monitörünü kullanıyoruz, böylece tamamen otomatik. Bu eğiticide, tüm kurulumlarının nasıl olduğunu ve otomatik e-posta göndermeye başlamak için sitenize kolayca nasıl ekleyebileceğinizi inceleyelim.

Kurulum

Atlayamadan önce, Campaign Monitor SDK'yı kurmanız ve Composer'a kolaylık sağlaması gerekecek. Besteci gerektirme komutunu çalıştırın:

composer require campaignmonitor/createsend-php

Ardından, aşağıdaki üç öğeyi .env dosyanıza ekleyin:

CAMPAIGN_MONITOR_API_KEY=
CAMPAIGN_MONITOR_CLIENT_ID=
CAMPAIGN_MONITOR_DAILY_LIST_ID=

İlk iki değeri, Kampanya Monitörü hesabınızda admin/account/apikeys adresini ziyaret ederek bulabilirsiniz. Günlük liste kimliği için "Listeler ve Aboneler" sayfasını ziyaret edin ve yeni bir liste oluşturun veya mevcut bir hesabı düzenleyin. Hesapta yönetici olduğunuz sürece, burada “API Abone Listesi Kimliği” ni bulacaksınız.

Bunların hepsini alın ve bunları .env dosyasına kaydedin ve şimdi e-postayı göndermek için komut oluşturmaya hazırız.

Konsol Komutu Oluşturma

Artık gerekli parçaları, Laravel Zamanlayıcısı'na bağlayabileceğimiz bir konsol komutu oluşturma zamanına sahip olduk.

php artisan make:command SendDailyEmail

Bu Artisan komutu, sınıfın iskelesini oluşturacaktır ve yeni dosyayı açmalı ve imza ve açıklama özelliklerini doldurmalısınız:

protected $signature = 'ln:daily';
protected $description = 'Send the daily email';

Ardından, sap yönteminin içinde, mantığı koyacağımız yer. Günlük bir e-posta olduğu için yeni bir makale göndermediğimiz bazı günler olacak. Örneğin tatiller ve hafta sonları. Yani bunlar kaçınılmalıdır.

Bunu dikkate almak için, son 24 saat içinde en az bir yayının yayınlandığından emin olmak için basit bir “if” kontrolü yapabiliriz. Gönderilen son e-postayı kontrol etmek için şu şekilde ayarladım:

public function handle()
{
$posts = Post::active()->where('publishes_at', '>', Carbon::parse('yesterday 3pm'))->get();
if (count($posts) > 0) {
return $this->email($posts);
}
}

Şimdi bu sınıfın son kısmı, yukarıda atıfta bulunulan “email ()” yöntemi ise. İşte bunun tam kodu:

protected function email($posts)
{
$auth = ['api_key' => config('services.campaign-monitor.key')];
$cm = new CS_REST_Campaigns(null, $auth);

$draft = $cm->create(config('services.campaign-monitor.client_id'), [
'Subject' => $posts->first()->title,
'Name' => 'Daily Email ('.date("Y-m-d").')',
'FromName' => 'Laravel News',
'FromEmail' => 'hello@example.com',
'ReplyTo' => 'hello@example.com',
'HtmlUrl' => 'https://site.com/dailyTemplate',
'ListIDs' => [config('services.campaign-monitor.daily_id')],
]);

$cm->set_campaign_id($draft->response);

$result = $cm->send(array(
'ConfirmationEmail' => 'hello@example.com',
'SendDate' => 'immediately'
));
}

Bu, sihrin neredeyse tamamının gerçekleştiği ve bu iki aşamalı bir süreç. Öncelikle, $cm->create kullanarak bir taslak kampanya $cm->create ve gerekli tüm ayarlardan oluşan bir dizi oluşturun. Buradaki tek benzersiz öğe, HtmlUrl ve e-postanın kaynağıdır.

Ardından, kampanya kimliğini belirledik ve ardından hemen $cm->send yöntemiyle $cm->send .

HTML E-posta Kaynağını Oluşturma

Bu son bölümde, Kampanya Monitörüne bir web rotası kullanacağımızı HtmlUrl olarak HtmlUrl ve bu, Laravel Blade ile şablonu oluşturmamızı ve yönlendirilebilmemizi sağladı. Böylece, gönderilmeden önce bir göz atabiliriz.

Bunu oluşturmak için sadece standart bir yol, denetleyici ve görünümdür, ancak görünümün bir e-posta olacağından HTML tablolarını kullanması gerekecektir. Zurb Vakfı'nı bir üs olarak kullandım, ancak başka birçok seçenek var ve bu tweet'le ilgili yanıtları inceleyerek başkalarının önerilerini görebiliyorsunuz.

Komutu Zamanlamak

Son adım, Komutumuzu app / Console / Kernel.php dosyasına kaydettirmek ve daha sonra istediğimiz programa ayarlamaktır.

//...

protected $commands = [
SendDailyEmail::class,
];

//...

protected function schedule(Schedule $schedule)
{
$schedule->command('ln:daily')->daily()->at('15:00');
}

Zamanlayıcıyı çağırmak için cron kurulumunuz olduğu sürece, şimdi her şey otomatik olarak gerçekleşmelidir.

Son sonuçları görmek ister misiniz? Günlük Laravel Haberler özetine abone olun ve doğrudan gelen kutunuzda göreceksiniz.

Bir önceki yazımız olan VestaCP Nasıl Kullanılır ve Kullanıcı Verileri Nasıl Taşınır? başlıklı makalemizi de okumanızı öneririz.

About This Author

Uzun yıllardır yazılım ile uğraşıyorum. PHP ile başladığım yazılım hayatıma şu an PHP'nin yanında Swift ve Python ile devam ediyorum. Bu güne kadar bir çok proje geliştirdim ve yeni projeler geliştirmeye de devam ediyorum. Bu sitede yazılımseverlere faydalı bilgiler vermeye, yazılım geliştirmeye, öğrendiklerimi paylaşmaya, yeni başlayanlara yol göstermeye ve onlara yardımcı olmaya çalışıyorum.

Comments are closed

%d blogcu bunu beğendi: