Zaawansowane szablony e-mail
Ptak
25 mar 2016
1 min read

Kluczowe Wnioski
Szablony SparkPost obsługują proste i zaawansowane komponowanie e-maili, w tym HTML, tekst, logikę warunkową, pętle i dynamiczne dane dla każdego odbiorcy poprzez zmienne zastępcze.
Tablice mogą być przekazywane do danych zastępczych, co pozwala na przeglądanie elementów (np. listy plików, ostatnie aktywności, niestandardowe wiersze tabel) w celu generowania spersonalizowanych sekcji dla każdego odbiorcy.
Potrójne nawiasy klamrowe
{{{ }}}pozwalają na wstawianie nieprzetworzonego, niesformatowanego HTML, co jest niezbędne, gdy dane zastępcze już zawierają znacznik.Załączniki mogą być wysyłane łatwo przy użyciu punktu końcowego transmisji (
content.attachments), co upraszcza dla Ciebie granice MIME i kodowanie.Wbudowane obrazy działają podobnie do załączników, ale renderują się w treści za pomocą odwołań
cid:.Same szablony nie obsługują natywnie załączników, ale można je wciąż uwzględniać, tworząc pełny e-mail RFC 5322 z częściami MIME i przechowując to jako szablon
email_rfc822.Przy tworzeniu surowych szablonów RFC 5322, substytucje nadal działają — ale tylko w nagłówkach i pierwszych częściach MIME HTML i tekstowych.
Użycie klienta pocztowego języka programowania (np. JavaMail) oferuje inną ścieżkę: generowanie pełnych wiadomości MIME w sposób programowy i wysyłanie ich za pośrednictwem SparkPost transmissions API.
W celu utrzymania, oddziel znacznik i dane, gdy tylko to możliwe—szczególnie podczas tworzenia szablonów, które zawierają pętle lub wiele sekcji MIME.
Zaawansowane funkcje szablonów (warunki, wyrażenia, iteracja tablic) pozwalają deweloperom budować zaawansowane, spersonalizowane e-maile bez konieczności przepisywania całych szablonów na każde użycie.
Q&A Highlights
Czy szablony SparkPost mogą obsługiwać pętle i tablice?
Tak. Szablony mogą iterować po tablicach przy użyciu konstrukcji
for each. To umożliwia dynamiczne tabele, listy, czy powtarzające się bloki HTML dla każdego odbiorcy.Do czego używane są potrójne nawiasy klamrowe?
{{{ variable }}}wstawia surowy HTML bez ucieczki. Jest to wymagane, gdy dane do zamiany już zawierają znaczniki HTML.Czy mogę wysyłać załączniki z templates?
Nie bezpośrednio przez pola szablonu — ale możesz przechowując szablon
email_rfc822, który zawiera części załączników MIME.Czy podstawienie nadal działa w szablonach RFC 5322?
Tak, ale tylko w nagłówkach i w pierwszych częściach MIME HTML + tekst.
Kiedy powinienem używać punktu końcowego transmisji zamiast szablonów?
Kiedy wysyłasz dynamiczne załączniki, obrazy osadzone lub gdy potrzebujesz, aby SparkPost automatycznie obsługiwał MIME.
Czy lepiej osadzić logikę widoku czy zachować ją oddzielnie?
Najlepszą praktyką jest utrzymywanie oddzielnego oznaczenia widoku i danych. Używaj szablonów do prezentacji i przekazuj czyste, uporządkowane dane do podstawienia.
Czy mogę wygenerować pełny e-mail MIME za pomocą biblioteki programistycznej?
Tak. Biblioteki takie jak JavaMail umożliwiają programowe tworzenie wiadomości RFC 5322 i wysyłanie ich za pośrednictwem interfejsu API transmisji SparkPost.
Czy zaawansowane funkcje szablonów są powszechnie używane?
Co zaskakujące, niewielu deweloperów z nich korzysta, ale odblokowują one potężne możliwości personalizacji: pętle, warunki, logikę inline i niestandardowe struktury MIME.
Dlaczego kiedykolwiek potrzebowałbym szablonów RFC 5322?
Tylko w przypadku wysyłania złożonych wiadomości e-mail z wieloma częściami (załączniki, niestandardowe typy MIME), których standardowa abstrakcja szablonów SparkPost nie obsługuje.
Ten post jest skierowany do deweloperów, którzy chcą jak najlepiej wykorzystać możliwości szablonów e-mail SparkPost. Zakłada się, że jesteś zaznajomiony z czytaniem treści JSON i śledzeniem podstawowego przepływu programowania. Nowe dla Ciebie terminy, jak na przykład RFC 5322, są łączone z odniesieniami do źródła.
Teraz, gdy to mamy za sobą, przejdźmy od razu do sedna.
Możliwości szablonów i transmisji SparkPost sprawiają, że wysyłanie e-maili jest prostsze. Te możliwości zapewniają abstrakcję dla zawartości tekstowej i HTML, co oznacza, że większość czasu nie ma potrzeby bezpośredniego kodowania surowego formatu e-mail, który jest zdefiniowany w RFC 5322, wcześniej znanym jako (RFC 822). Ale czasami możesz chcieć tworzyć bardziej złożone wiadomości, które mają inne części Rozszerzeń Wielozadaniowych Internetu (MIME), które nie są bezpośrednio udostępnione za pośrednictwem RESTful interfesju SparkPost.
Uproszczona Kompozycja Email
Najpierw przeanalizujmy scenariusz wysyłania e-maila w słoneczny dzień. Użyj punktu końcowego transmission do dostarczenia text i HTML treści. W tle, SparkPost zajmuje się komponowaniem ważnego e-maila zgodnego z RFC 5322. SparkPost wprowadzi zmienne substytucyjne z substitution_data do treści tekstowej i HTML. To jest potężny sposób na generowanie niestandardowej treści dla każdego odbiorcy we wspólnym szablonie.
Oto przykład transmission z treścią HTML i tekstową z substitution_data.
Zastąp tablice danych
Załączniki w możliwościach Transmission
Punkt końcowy transmisji zapewnia również abstrakcję dla wysyłania załączników. Poniżej zobaczysz, że załączniki są określone w tablicy content.attachments, gdzie każdy obiekt w tablicy opisuje pojedynczy element załącznika. Tak jak wcześniej, SparkPost zadba o kodowanie text, HTML, substitutions oraz przechodzenie przez tablicę załączników, aby zakodować prawidłowo sformułowaną wiadomość e-mail.
Najlepsze praktyki nakazują unikanie wysyłania załączników, chyba że jest to wyraźnie wymagane jako część twojej usługi.
Poniżej znajdują się wymagane pola dla załącznika:
type: Typ MIME załącznika
name: Nazwa pliku załącznika
data: Dane pliku zakodowane w Base64
Tak wygląda załącznik wewnątrz treści transmisji:
Możesz również wysłać „zdjęcia w treści” w transmisji. Są one bardzo podobne do załączników i są określone w tablicy content.inline_images, gdzie każdy obiekt inline_image jest podobny do obiektu załącznika pokazany powyżej.
Załączniki w Templates
Teraz, gdy mamy właściwe tło do wysyłania załączników z punktem końcowym transmisji, przyjrzyjmy się, jak to zrobić za pomocą szablonów. Na chwilę obecną nie ma abstrakcji załączników, jaką znajdziesz dla transmisji inline. Można by dojść do wniosku, że szablonów nie można tworzyć z załącznikami. Byłbyś częściowo poprawny, ale istnieje obejście, chociaż nie będziesz już odizolowany od formatu RFC 5322.
Możesz osiągnąć załączniki w szablonach, kodując zawartość RFC 5322 samodzielnie, co obejmuje załączniki. Dobra wiadomość jest taka, że nie utracisz możliwości korzystania z Substitution Data w swoich email headers, HTML i częściach text. Bądź świadomy, że ten typ szablonu ogranicza podstawienia do headers oraz pierwszej części HTML i pierwszej części text.
Oto przykład, jak to się robi.
RFC822 Email
Utwórz swój email RFC 5322 z danymi zastępczymi, które chcesz. Stworzyłem tego w moim kliencie poczty i wysłałem go do siebie. Po otrzymaniu, skopiowałem źródło i zamieniłem pola, które chcę dynamicznie zastąpić.
Ostatnia część MIME w tej wiadomości, którą zobaczysz Content-Disposition: attachment; filename=myfile.txt”. To tutaj zdefiniowana jest nazwa pliku. Zawartość Twojego załącznika będzie z pewnością dużo bardziej skomplikowana, ale ten przykład stara się być prosty.
Stored Template
Gdy masz już ważny e-mail RFC 5322, przechowaj go używając formy email_rfc822 punktu końcowego szablonu zamiast używać pól text oraz pól HTML. Oto przykład, jak wygląda content dla tej wiadomości:
Gdy żądanie się zakończy, SparkPost odpowie unikalnym identyfikatorem dla Twojego nowego szablonu. Na przykład: xxxxxxx.
Wysyłanie Template
Dobra wiadomość jest taka, że stworzenie treści RFC 5322 było trudną częścią. Od tej pory wysyłanie tego szablonu za pomocą SparkPost jest dokładnie takie samo, jak wysyłanie każdego innego szablonu.
Oto jak wysyłamy ten szablon i wypełniamy dane zamienników:
Szablony z Mail Clienta API
Jeśli używasz języka programowania, który ma bibliotekę do komponowania wiadomości e-mail, możesz jej użyć do programowego tworzenia szablonu, a nawet wysłania wiadomości inline. Oto przykład użycia JavaMail przez endpoint transmisji SparkPost. Ta metoda powinna być łatwo przetłumaczona na PHP lub dowolny język według Twojego wyboru.
Zakończenie
Teraz, gdy widzisz, jak SparkPost może być używany do wysyłania e-maili o niemal dowolnej złożoności, możesz chcieć rzucić okiem na „SparkPost Supports Sending Email on Apple Watch” lub sprawdzić składnię podstawienia, aby zobaczyć, jak można ją używać z „if then else”, „wyrażeniami w warunkach” lub „Iteracją tablicy” bezpośrednio w twoim szablonie lub treści przesyłki.



