Asp.Net Mvc ile MailChimp Api Kullanımı

Merhaba Arkadaşlar,

Bir arama sonucunda bu makaleyi bulduysanız giriş kısmını “bildiğiniz gibi” yazarak başlayabileceğimi düşünüyorum. Bildiğiniz gibi mailchimp yaygın olarak kullanılan bir e-bülten uygulamasıdır. Site üzerinde ücretli veya ücretsiz versiyonlardan bir tanesini seçerek kullanmaya başlayabiliyor ve listelere eklediğimiz üyelerimize istediğimiz aralıklarla mail gönderimi yapabiliyoruz. Hesabımıza giriş yaptıktan sonra liste oluşturma ve listeye tekli, çoklu veri ekleme işlemlerinin nasıl yapıldığını mailchimp’in kendi yazıları arasında bulabilirsiniz. Ben bugün bu listeleri site üzerinden dinamik bir şekilde nasıl yönetebileceğimizi göstereceğim. Kodlayacağımız uygulamada bir adet newsletter formumuz olacak ve bu alanı dolduran kullanıcılarımızı listeye ekleteceğiz.

İnternet üzerinde araştırdığımızda mailchimp’in kendi api’si üzerinden veya paylaşılmış diğer paketlerle bu işlemi yapabiliriz. Ben bugün https://github.com/danesparza/MailChimp.NET üzerinde paylaşılmış olan paketi kullanacağım. Bize sunulan api’nin içeriği geniş bir dökümantasyonu barındırıyor. Ben kurulum ve veri ekleme kısmını anlatacağım. Sonrasında api’nin sunduğu diğer özellikleri de kullanarak uygulamanızı geliştirebilirsiniz.

Visual Studio’yu açalım ve yeni bir mvc projesi oluşturalım. Dosyalar oluşturulduktan sonra “Solution Explorer” içerisinde proje adına sağ tık / “Manage Nuget Packages” linkine tıklayalım. Arama alanından “MailChimp.Net” ‘i aratalım ve son versiyonunu proje içerisine kuralım.

Kurulum tamamlandıktan sonra api özelliklerini artık kullanabiliyor oluyoruz. Yukarıda da anlattığım gibi biz bu uygulamada bir form içerisinden alacağımız mail adresini mailchimp içerisindeki listeye kaydedeceğiz. Bu nedenle gelen değeri tutacağımız bir model oluşturmalıyız. “Models” klasörü üzerinde sağ tık / Add / Class seçeneği ile “Newsletter.cs” isimli bir model oluşturuyoruz. Sayfa açıldıktan sonra içerisinde string tipinde “email” isimli bir değer tanımlayalım.

public class Newsletter
{
    public string email { get; set; }
}

Daha sonra “Controllers” klasörü üzerinde sağ tık / Add / Controller ile “HomeController” isimli boş bir Controller ekleyelim. “Index” ActionResult’ı üzerinde sağ tık / Add View seçeneği ile boş bir view ekleyelim.

Sayfa tasarımını yaparken form gönderimi yapıldıktan sonra aynı sayfa içerisinde sonuç mesajının verileceğini düşünerek düzenleme yapacağım. Form gönderim işleminden sonra “Success” isimli bir ViewBag oluşturup değerini “true” vererek sayfaya göndereceğim. Bu nedenle ilk giriş ve sonuç mesajının gösterileceği durumları sayfa içerisinde bir if sorgusu ile kontrol ediyorum. Eğer ViewBag.Success değeri gönderilmiş ise sonuç mesajı, eğer gönderilmemiş ise formu gösterdiğim sayfa düzeni şu şekilde olmalıdır:


@if (ViewBag.Success != null && ViewBag.Success)
{
    <h3>Kayıt başarıyla eklenmiştir.</h3>
}
else
{
    <form action="" method="post">
        <input type="text" name="email" />
        <br />
        <input type="submit" value="GÖNDER" />
    </form>
}


Şimdi sayfa ilk açıldığında görünen formun gönderim işlemini kodlayacağız. Bunun için HomeController’ı açıyoruz ve daha önce view oluşturduğumuz “Index()” isimli ActionResult’ın altına [Httppost] ile gönderildiğinde yapılacak işlemleri yazıyoruz. Kodlamaya başlamadan önce kodlarımızın içerisinde kullanacağımız api key ve verileri ekleyeceğimiz listenin id’sini öğrenmeliyiz.

Yeni bir api key oluşturmak için: http://kb.mailchimp.com/integrations/api-integrations/about-api-keys
Oluşturduğunuz listenin ID’sini öğrenmek için: http://kb.mailchimp.com/lists/managing-subscribers/find-your-list-id

Bu linkler zaman içerisinde değişebilir. Ama siz google üzerinden “Mailchimp create api key” ve “Mailchimp list id” şeklinde aramalar yaptığınızda her zaman sorunun cevabına ulaşabilirsiniz 🙂

İlk olarak formun post işleminde yazılacak kodları paylaşıyorum. Ardından her bir kod bloğunun hangi işe yaradığını anlatacağım.


[HttpPost]
public ActionResult Index(Newsletter mailAddress)
{
    var mergedVariables = new MergeVar();
    mergedVariables.Add("FNAME","KULLANICI ADI");
    mergedVariables.Add("LNAME", "KULLANICI SOYADI");

    var mc = new MailChimpManager("your api key"); // api key

    var email = new EmailParameter()
    {
        Email = mailAddress.email
    };

    var result = mc.Subscribe("your list id", email, mergedVariables, doubleOptIn: false, updateExisting: true); // list id
    ViewBag.Success = true;

    return View();
}

Bu kod bloğunu sayfaya eklediğinizde uygulamanın en başında kurduğumuz paket ile birlikte gelen bir çok özelliği aktif etmeniz gerektiğini göreceksiniz. Bu işlemi yaptıktan sonra artık proje çalışmaya hazır hale gelecektir.

1-) ActionResult’ı yazdığımız ilk satırda daha önce oluşturduğumuz “Newsletter” modeli içerisinde View içerisindeki form’da kullandığımız input’u mailAddress isimli bir değer içerisine yazıyoruz.
2-) Daha sonra “mergedVariables” isimli bir değişken oluşturuyoruz ve birleştirilmiş biçimde gönderilecek verileri alttaki iki satırda “Add” komutu ile yazıyoruz. Bu satırlardaki FNAME ve LNAME yazarak çektiğimiz isim ve soyisim değerleri mailchimp standartlarına uygun olsun diye bu şekilde belirtiliyor. Mailchimp üzerinden mailing gönderimi yaparken “Sayın Ersel Gülyaz” gibi kullanıcının adı ve soyadını yazmamız gereken alanlarda Sayın FNAME LNAME şeklinde ekleme yapmamız gerekmektedir.
3-) mc isimli bir değişken oluşturuyoruz ve “MailChimpManager” özelliğinin içerisine daha önce oluşturduğumuz api key içerisinden alacağımız değeri yazıyoruz.
4-) email isimli bir değişken oluşturuyoruz. Bunun bir “EmailParameter()” olduğunu belirtip içerisine gelebilecek değerlerden “Email” için formdan aldığımız “mailAddress” değerini yazıyoruz. Yani artık formdan gelen değerimiz api aracılığı ile listeye eklenmek üzere gönderilmeye hazır duruma gelmiş oluyor.
5-) result isimli bir değişken oluşturuyoruz. Bu değişken bizim işlemimizin sonu anlamına geliyor. Üstte oluşturup içerisine api key’i eklediğimiz ve onay sürecinden geçmesini sağladığımız “mc” isimli değişkenin “Subscribe” özelliği içerisine Mailchimp’in belirlediği sırada değerlerimizi aktarmamız gerekiyor.
6-) İlk olarak yukarıda bahsettiğimiz şekilde öğrendiğimiz listenin id değerini yazıyoruz.
7-) Daha sonra yine yukarıda oluşturduğumuz email ve mergedVariables değişkenlerini ekliyoruz.
8 ) “doubleOptIn” değeri yeni eklenen üyenin direkt olarak listeye eklenme veya bir onay sürecinden geçirilme durumuna göre yazılır. Ben false olarak yazdığım için mail adresi direkt olarak listeye eklenecektir. Eğer değer true olsaydı önce kullanıcının yazdığı mail adresine bir onay mail’i gönderilecekti.
9-) “updateExisting” değerini de true olarak ekledim. Bu benim eklediğim verilerin güncellenebilir olduğunu gösteriyor. Örneğin listeye eklediğimiz deneme@bilgisayaci.org mail adresini iki gün sonra tekrar tekrar eklemek istediğimizde listede eklenme tarihi güncellenecek ve yeni tarih görünecektir.
10-) En alta eklediğimiz ViewBag.Success = true; değeri de makalenin en başında yazdığım form veya sonuç ekranının gösterimi için gerekliydi. Bu değer form gönderiminin ardından true olarak gönderilecek ve form yerine sonuç ekranını göreceğiz.

Not : Bu ders içeriğinde kullanılan dosyaları İndir Sayfası 63 No ‘lu Maddeden İndirebilirsiniz..

Reklam

Tüm Yorumlar

Leave a Reply

Your email address will not be published. Required fields are marked *