MailChimp W tym wpisie pokaże Ci co zrobiłem aby stworzyć swój własny newsletter na mojego bloga. Wybrałem MailChimp, ale wiesz mi próbowałem różnych rozwiązań, aby wybrać właśnie ten. Ten blog działa na ASP.NET Core 3.2 więc zobaczmy jak MailChimp API działa w C#?

Teraz każdy szanowany programista ma swój newsletter. No cóż, trzeba iść z duchem czasu, bo jeżeli chodzi o marketing programisty blog to zdecydowanie za mało. Jestem nawet świadomy, że newsletter to coś co powinien mieć jakieś 4 lata temu na moim blogu. 

Chociaż też warto zadać sobie pytanie po co Ci jest newsletter. Ma to sens, jeśli chcesz informować danego klienta o kampanii swojego produktu/kursu. 

Powiedzmy, że ktoś jest zainteresowany Twoim kursem programowania i poprzez newsletter nakręcasz go na zakup lu rozwiewasz jego wątpliwości.

Być może chcesz zaprosić paru użytkowników na cykl e-mail, w których zdradzasz jakiś sekret.

Dlatego o tym piszę? Słuchaj w roku 2020 (i później) zwykły newsletter o tym "co nowego na moim blogu" powoli nie wystarcza i warto się zastanowić po co Ci jest newsletter.  Istnieje nawet szansa, że informowanie swoich fanów o tym "co nowego na twoim blogu:" będzie skuteczniejsze w media społecznościowych niż poprzez newsletter.

Nie powiem, że zacząłem widzieć, że każdy blog programistyczny ma newsletter, ale posiadanie newsletter dla samego posiadania trochę mija się z celem.

To tyle, jeśli chodzi o wywód. Przejdźmy to praktyki.

MailChimp co warto w nim zrobić

Na początek radzę Ci stworzyć automatycznego e-mail, który przywita twoich nowych użytkowników.

mailchimp2.png

Później wybierasz opcję 'Welcome new subscribers'.

mailchimp3.png

Utwórz dla siebie odpowiedni szablon e-mail witającego.

Pamiętaj, że każdy e-mail możesz edytować w zakładce Campaigns.

mailchimp4.png

Jak zdobyć id twojej publiczności

Te ID będzie Ci potrzebne, gdy korzystasz z API MailChimp.

Klikasz na zakładkę Audience i wybierasz "View Contacts"

mailchimp5.png

Później w "Settings" wybierasz opcję "Audience Name and defaults".

mailchimp6.png

Jak zdobyć API Key

Wybierasz swój profil i klikasz później w opcję "Account".

mailchimp7.png

Tam w zakładce Extras wybierasz API keys.

Teraz możesz utworzyć klucz, który będzie na za chwilę potrzebny.

MailChimp .Net

Czytanie dokumentacji API MailChimp jest nudne. Poza tym po co pisać ręcznie zapytania HTTP POST do ich api jak możesz skorzystać z gotowej biblioteki, która ma te zapytania napisane za Ciebie.

https://github.com/brandonseydel/MailChimp.Net

Paczka NuGet trochę inaczej się nazywa.

mailchimp.PNG

Jeżeli korzystasz z ASP.NET CORE lub ASP.NET 5 to proponuje umieścić wszystkie klucze do MailChimp API w pliku appsettings.json

O to, jak to wygląda u mnie:

  "mailChimpConfig": {
    "apiKey": "api key który utworzyłeś",
    "audiencePrograming": "id twojego audience",
    "tags": [
      "FromInstagram",
      "FromFacebook",
      "FromWebsite",
      "Webbinar",
      "Blogpost"
    ]
  },

Później to wszystko zostanie zmapowane do obiektu klasy.

public class MailChimpConfig
{
    public string ApiKey { get; set; }

    public string AudiencePrograming { get; set; }

    public List<string> Tags { get; set; }
}

W pliku startup.cs dodajemy do metody ConfigureServices taką linijkę kodu:

services.Configure<MailChimpConfig>
(Configuration.GetSection("mailChimpConfig"));

Oto kod mojego kontrolera:

public class NewsletterController : Controller
{
private readonly MailChimpConfig _mailChimpConfig;

public NewsletterController(IOptionsSnapshot<MailChimpConfig> mailChimpConfig)
{
    _mailChimpConfig = mailChimpConfig.Value;
}

[Route("/newsletteraction")]
public async Task<IActionResult> Subscribe(string email)
{
    if (!EmailValidator.Validate(email))
    {
        return View("~/Views/0_Main_New/Newsletter.cshtml", 
            NewsletterMode.WrongEmail);
    }

    IMailChimpManager manager = new MailChimpManager(_mailChimpConfig.ApiKey);
    var listid = _mailChimpConfig.AudiencePrograming;

    var member = new Member
    { EmailAddress = email, StatusIfNew = Status.Subscribed, Status = Status.Subscribed };

    var test = await manager.Members.AddOrUpdateAsync(listid, member);

    Tags tags = new Tags();
    tags.MemberTags.Add(new Tag() { Name = "FromWebSite", Status = "active" });

    if (test.TagsCount == 0)
        await manager.Members.AddTagsAsync(listid, email, tags);

    return Redirect("/nok");
}

Metoda AddOrUpdateAsync doda lub zaktualizuje użytkownika. Listid to id twojej grupy publiczności.

var test = await manager.Members.AddOrUpdateAsync(listid, member);

Niestety nie można jednym zapytaniem dodać/zaktualizować użytkownika newsletter i przypisać mu tagi. Dlatego trzeba wykonać drugie zapytanie.

Tags tags = new Tags();
tags.MemberTags.Add(new Tag() { Name = "FromWebSite", Status = "active" });

if (test.TagsCount == 0)
   await manager.Members.AddTagsAsync(listid, email, tags);

Pamiętaj tagi to pomocnicza informacja dla Ciebie. Dzięki grupowaniu po tagach będziesz mógł wysłać newsletter do odpowiednich użytkowników.

Co możesz zrobić używając tego API.  Możesz pobrać wszystkich użytkowników danej grupy.

var listId = "TestListId";
await this.mailChimpManager.Members.GetAllAsync(listId).ConfigureAwait(false);

To wszystko, jeśli skonfigurowałeś poprawnie Newsletter to twój test powinien zakończyć się

Zapisując się na newsletter dostaniesz e-mail witającego.

sukcesem.