Archiwa tagu: Email template

Email Templates w MVC

Wróciłem ostatnio do zagadnienia wysyłania e-mail z szablonów i bardzo nie podobał mi się sposób w jaki to robiłem wcześniej, czyli dla każdego template’a nowa metoda if i tak dalej…

W przypadku 2 góra 5 templatów takie rozwiązanie jest bardzo ‚lazy’ 🙂 Schody zaczynają się kiedy ich liczba rośnie, a my stwierdzamy, że nie chce nam się 😛

W celu ominięcia schodów stworzyłem w projekcie webowych (ASP.NET MVC 4) folder o nazwie EmailTemplates i założyłem, że w tym folderze będą wszystkie HTML templates (np. UserRegisterTemplate.html).

Stworzyłem w tym folderze również enum’a którego elementami są nazwy templates bez HTML (po co, zaraz się wyjaśni ;)).

Do projektu z modelami dodałem folder Email w którym będziemy trzymać modele dla templetów (być może nazwa nie jest zbyt trafiona, ale zostawiam).

Każdy template z założenia ma jakieś dynamiczne dane. Czy to data, czy nazwa użytkownika, nieważne co, zawsze tam coś się trafi ;]

Założyłem jeszcze, że każda properta/właściwość powinna być typu string, dzięki temu będzie łatwiej potem te dynamiczne wartości wstrzyknąć do template’a.

Żebym nie był zależny od konkretnego modelu postanowiłem stworzyć sobie pusty interfejs po którym dziedziczą wszystkie modele znajdujące się w folderze email.

oraz model:

Z tymi założeniami stworzyłem najważniejszą klasę tej publikacji ConfigureTemplates w folderze EmailTemplates, będzie służyła nam ona do tworzenia wiadomości i przekazania dalej do serwisu wysyłającego maile MailMessage i SmtpClient.

Tłumacząc od początku, podaje w parametrach template od którego zależy który plik zostanie wczytany, oraz obiekt dziedziczący po interfejsie IEmail, a także email odbiorcy i temat wiadomości.

Wywołanie metody:

Oraz dane potrzebne w Web.Config:

Tadaa, koniec 🙂 Na razie jestem zadowolony z tego rozwiązania, zobaczymy co przyjdzie z czasem 🙂