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

Najważniejsze informacje
Szablony SparkPost wspierają proste i zaawansowane tworzenie wiadomości e-mail, w tym HTML, tekst, logikę warunkową, pętle oraz dynamiczne dane dla każdego odbiorcy poprzez zmienne substytucyjne.
Tablice mogą być przekazywane do danych substytucyjnych, co pozwala na przechodzenie przez elementy (np. listy plików, ostatnie aktywności, niestandardowe wiersze tabeli), aby generować spersonalizowane sekcje dla każdego odbiorcy.
Potrójne klamry
{{{ }}}pozwalają na wstawianie surowego, nieescapowanego HTML, co jest niezbędne, gdy twoje dane substytucyjne już zawierają znacznikowanie.Załączniki mogą być wysyłane łatwo przy użyciu punktu końcowego transmisji (
content.attachments), który abstrahuje granice MIME i kodowanie za ciebie.Obrazy inline działają podobnie do załączników, ale są renderowane w treści przy użyciu
cid:odniesień.Same szablony nie wspierają natywnie załączników, ale możesz nadal je uwzględnić, tworząc pełną wiadomość e-mail RFC 5322 z częściami MIME i zapisując to jako szablon
email_rfc822.Tworząc surowe szablony RFC 5322, substytucje wciąż działają — ale tylko w nagłówkach oraz w pierwszych częściach MIME HTML i tekstowym.
Używanie klienta poczty w swoim języku programowania (np. JavaMail) oferuje inną ścieżkę: generowanie pełnych wiadomości MIME programowo i wysyłanie ich za pomocą API transmisji SparkPost.
Aby zapewnić możliwość utrzymania, trzymaj znacznikowanie i dane oddzielone, ilekroć 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 na budowanie wyrafinowanych, spersonalizowanych wiadomości e-mail bez przepisywania całych szablonów dla każdego przypadku użycia.
Podsumowanie pytań i odpowiedzi
Czy szablony SparkPost mogą obsługiwać pętle i tablice?
Tak. Szablony mogą iterować po tablicach przy użyciu konstrukcji
for each. Umożliwia to dynamiczne tabele, listy lub powtarzające się bloki HTML dla każdego odbiorcy.Do czego służą potrójne klamry?
{{{ variable }}}wstawia surowy HTML bez escapowania. Jest to wymagane, gdy twoje dane do zastąpienia już zawierają oznaczenia HTML.Czy mogę wysyłać załączniki z szablonami?
Niez bezpośrednio przez pola szablonu — ale możesz to zrobić, przechowując szablon
email_rfc822, który zawiera części załącznika MIME.Czy zastępowanie wciąż działa w szablonach RFC 5322?
Tak, ale tylko w nagłówkach i pierwszych częściach MIME HTML + tekstowych.
Kiedy powinienem używać punktu końcowego transmisji zamiast szablonów?
Kiedy wysyłasz dynamiczne załączniki, obrazy w tle, lub kiedy potrzebujesz, aby SparkPost automatycznie obsługiwał MIME.
Czy lepiej osadzić logikę widoku, czy trzymać ją oddzielnie?
Najlepszą praktyką jest oddzielenie markupów widoków od danych. Używaj szablonów do prezentacji i przekazuj czyste, uporządkowane dane do substytucji.
Czy mogę wygenerować pełny email MIME za pomocą biblioteki programistycznej?
Tak. Biblioteki takie jak JavaMail pozwalają na programowe tworzenie wiadomości RFC 5322 i wysyłanie ich przez API transmisji SparkPost.
Czy zaawansowane funkcje szablonów są powszechnie używane?
Zaskakująco niewielu programistów ich używa, ale odblokowują potężną personalizację: pętle, warunki, logikę wbudowaną i niestandardowe struktury MIME.
Dlaczego kiedykolwiek potrzebowałbym szablonów RFC 5322?
Tylko podczas wysyłania złożonych wiadomości e-mail z różnymi częściami (załączniki, niestandardowe typy MIME), które są nieobsługiwane przez standardową abstrakcję szablonów SparkPost.
Ten post jest skierowany do dewelopera, który chce w pełni wykorzystać możliwości szablonów e-maili SparkPost. Zakłada się, że jesteś zaznajomiony z czytaniem treści JSON i podążaniem za podstawowym przepływem programowania. W miarę wprowadzania terminów, które mogą być dla Ciebie nowe, takich jak RFC 5322, tekst jest powiązany z jego źródłowym odniesieniem.
Niech to będzie na względzie, przeskoczmy od razu do rzeczy.
Możliwości szablonów i transmisji SparkPost sprawiają, że wysyłanie e-maili jest proste. Te możliwości zapewniają abstrakcję dla treści tekstowych i HTML, co oznacza, że w większości przypadków nie ma potrzeby bezpośredniego kodowania surowego formatu e-maili, który jest zdefiniowany w RFC 5322 znanym wcześniej jako (RFC 822). Ale czasami możesz chcieć stworzyć bardziej złożone wiadomości, które mają inne części Multipurpose Internet Mail Extensions (MIME), które nie są bezpośrednio dostępne za pośrednictwem interfejsu RESTful SparkPost.
Ten post jest skierowany do dewelopera, który chce w pełni wykorzystać możliwości szablonów e-maili SparkPost. Zakłada się, że jesteś zaznajomiony z czytaniem treści JSON i podążaniem za podstawowym przepływem programowania. W miarę wprowadzania terminów, które mogą być dla Ciebie nowe, takich jak RFC 5322, tekst jest powiązany z jego źródłowym odniesieniem.
Niech to będzie na względzie, przeskoczmy od razu do rzeczy.
Możliwości szablonów i transmisji SparkPost sprawiają, że wysyłanie e-maili jest proste. Te możliwości zapewniają abstrakcję dla treści tekstowych i HTML, co oznacza, że w większości przypadków nie ma potrzeby bezpośredniego kodowania surowego formatu e-maili, który jest zdefiniowany w RFC 5322 znanym wcześniej jako (RFC 822). Ale czasami możesz chcieć stworzyć bardziej złożone wiadomości, które mają inne części Multipurpose Internet Mail Extensions (MIME), które nie są bezpośrednio dostępne za pośrednictwem interfejsu RESTful SparkPost.
Ten post jest skierowany do dewelopera, który chce w pełni wykorzystać możliwości szablonów e-maili SparkPost. Zakłada się, że jesteś zaznajomiony z czytaniem treści JSON i podążaniem za podstawowym przepływem programowania. W miarę wprowadzania terminów, które mogą być dla Ciebie nowe, takich jak RFC 5322, tekst jest powiązany z jego źródłowym odniesieniem.
Niech to będzie na względzie, przeskoczmy od razu do rzeczy.
Możliwości szablonów i transmisji SparkPost sprawiają, że wysyłanie e-maili jest proste. Te możliwości zapewniają abstrakcję dla treści tekstowych i HTML, co oznacza, że w większości przypadków nie ma potrzeby bezpośredniego kodowania surowego formatu e-maili, który jest zdefiniowany w RFC 5322 znanym wcześniej jako (RFC 822). Ale czasami możesz chcieć stworzyć bardziej złożone wiadomości, które mają inne części Multipurpose Internet Mail Extensions (MIME), które nie są bezpośrednio dostępne za pośrednictwem interfejsu RESTful SparkPost.
Wysyłanie szablonu
Dobrą wiadomością jest to, że stworzenie treści RFC 5322 było najtrudniejszą częścią. Od teraz wysyłanie tego szablonu z SparkPost jest dokładnie takie samo jak wysyłanie jakiegokolwiek innego szablonu.
Oto jak wysyłamy ten szablon i wypełniamy dane dotyczące zamiany:
{ "campaign_id": "MyCampaign", "return_path": "myReturnPath@yourdomain.com", "substitution_data": { "replyto": "myReplyToh@yourdomain.com", "from": "MyFrom@yourdomain.com", "subject": "my subject", "body1": "Extra content for the HTML part", "body2": "Extra content for the text part" }, "recipients": [ { "substitution_data": {}, "address": { "email": "test1@domain.com", "name": "test1" } } ], "content": { "template_id": "xxxxxxx", "use_draft_template": true } }
Dobrą wiadomością jest to, że stworzenie treści RFC 5322 było najtrudniejszą częścią. Od teraz wysyłanie tego szablonu z SparkPost jest dokładnie takie samo jak wysyłanie jakiegokolwiek innego szablonu.
Oto jak wysyłamy ten szablon i wypełniamy dane dotyczące zamiany:
{ "campaign_id": "MyCampaign", "return_path": "myReturnPath@yourdomain.com", "substitution_data": { "replyto": "myReplyToh@yourdomain.com", "from": "MyFrom@yourdomain.com", "subject": "my subject", "body1": "Extra content for the HTML part", "body2": "Extra content for the text part" }, "recipients": [ { "substitution_data": {}, "address": { "email": "test1@domain.com", "name": "test1" } } ], "content": { "template_id": "xxxxxxx", "use_draft_template": true } }
Dobrą wiadomością jest to, że stworzenie treści RFC 5322 było najtrudniejszą częścią. Od teraz wysyłanie tego szablonu z SparkPost jest dokładnie takie samo jak wysyłanie jakiegokolwiek innego szablonu.
Oto jak wysyłamy ten szablon i wypełniamy dane dotyczące zamiany:
{ "campaign_id": "MyCampaign", "return_path": "myReturnPath@yourdomain.com", "substitution_data": { "replyto": "myReplyToh@yourdomain.com", "from": "MyFrom@yourdomain.com", "subject": "my subject", "body1": "Extra content for the HTML part", "body2": "Extra content for the text part" }, "recipients": [ { "substitution_data": {}, "address": { "email": "test1@domain.com", "name": "test1" } } ], "content": { "template_id": "xxxxxxx", "use_draft_template": true } }
Uproszczona kompozycja e-maila
Najpierw przejrzyjmy scenariusz słonecznego dnia dotyczący wysyłania e-maila. Użyj punktu końcowego transmisji, aby dostarczyć text i treść HTML. Za kulisami SparkPost zajmuje się tworzeniem ważnego e-maila RFC 5322. SparkPost wstawia zmienne substytucyjne z substitution_data do treści tekstowej i HTML. To jest potężny sposób na generowanie dostosowanej treści dla każdego odbiorcy w wspólnym szablonie.
Oto przykład transmisji z treścią HTML i tekstową z substitution_data.
{ "options": { "open_tracking": true, "click_tracking": true }, "campaign_id": "christmas_campaign", "return_path": "bounces-christmas-campaign@domain.com", "metadata": { "user_type": "students" }, "substitution_data": { "sender": "Big Store Team" }, "recipients": [ { "return_path": "123@bounces.domain.com", "address": { "email": "wilma@domain.com", "name": "Wilma Flintstone" }, "tags": [ "greeting", "prehistoric", "fred", "flintstone" ], "metadata": { "place": "Bedrock" }, "substitution_data": { "customer_type": "Platinum" } } ], "content": { "from": { "name": "Fred Flintstone", "email": "fred@domain.com" }, "subject": "Big Christmas savings!", "reply_to": "Christmas Sales <sales@domain.com>", "headers": { "X-Customer-Campaign-ID": "christmas_campaign" }, "text": "Hi {{address.name}} \nSave big this Christmas in your area {{place}}! \nClick http://www.mysite.com and get huge discount\n Hurry, this offer is only to {{user_type}}\n {{sender}}", "html": "<p>Hi {{address.name}} <br>Save big this Christmas in your area {{place}}! <br>Click <a href=\"http://www.mysite.com\">here</a> and get huge discount</p><p>Hurry, this offer is only to {{user_type}}</p><p>{{sender}}</p>" } }
Przegląd możliwości substytucji
Możliwość | Opis |
|---|---|
Podstawowa substytucja zmiennych | Wstawia pojedyncze dynamiczne wartości do treści tekstowej lub HTML |
Logika warunkowa | Renderuje różną treść w oparciu o ewaluację boolean lub wyrażenia |
Iteracja po tablicach | Przechodzi przez tablice (np. listy plików), aby generować powtarzającą się treść |
Wstawianie surowego HTML ({{{ }}}) | Umożliwia nieprzetworzony HTML w sytuacjach, gdy znacznik pochodzi z źródła danych |
Personalizacja dla każdego odbiorcy | Obsługuje całkowicie unikalną treść dla każdego odbiorcy |
Najpierw przejrzyjmy scenariusz słonecznego dnia dotyczący wysyłania e-maila. Użyj punktu końcowego transmisji, aby dostarczyć text i treść HTML. Za kulisami SparkPost zajmuje się tworzeniem ważnego e-maila RFC 5322. SparkPost wstawia zmienne substytucyjne z substitution_data do treści tekstowej i HTML. To jest potężny sposób na generowanie dostosowanej treści dla każdego odbiorcy w wspólnym szablonie.
Oto przykład transmisji z treścią HTML i tekstową z substitution_data.
{ "options": { "open_tracking": true, "click_tracking": true }, "campaign_id": "christmas_campaign", "return_path": "bounces-christmas-campaign@domain.com", "metadata": { "user_type": "students" }, "substitution_data": { "sender": "Big Store Team" }, "recipients": [ { "return_path": "123@bounces.domain.com", "address": { "email": "wilma@domain.com", "name": "Wilma Flintstone" }, "tags": [ "greeting", "prehistoric", "fred", "flintstone" ], "metadata": { "place": "Bedrock" }, "substitution_data": { "customer_type": "Platinum" } } ], "content": { "from": { "name": "Fred Flintstone", "email": "fred@domain.com" }, "subject": "Big Christmas savings!", "reply_to": "Christmas Sales <sales@domain.com>", "headers": { "X-Customer-Campaign-ID": "christmas_campaign" }, "text": "Hi {{address.name}} \nSave big this Christmas in your area {{place}}! \nClick http://www.mysite.com and get huge discount\n Hurry, this offer is only to {{user_type}}\n {{sender}}", "html": "<p>Hi {{address.name}} <br>Save big this Christmas in your area {{place}}! <br>Click <a href=\"http://www.mysite.com\">here</a> and get huge discount</p><p>Hurry, this offer is only to {{user_type}}</p><p>{{sender}}</p>" } }
Przegląd możliwości substytucji
Możliwość | Opis |
|---|---|
Podstawowa substytucja zmiennych | Wstawia pojedyncze dynamiczne wartości do treści tekstowej lub HTML |
Logika warunkowa | Renderuje różną treść w oparciu o ewaluację boolean lub wyrażenia |
Iteracja po tablicach | Przechodzi przez tablice (np. listy plików), aby generować powtarzającą się treść |
Wstawianie surowego HTML ({{{ }}}) | Umożliwia nieprzetworzony HTML w sytuacjach, gdy znacznik pochodzi z źródła danych |
Personalizacja dla każdego odbiorcy | Obsługuje całkowicie unikalną treść dla każdego odbiorcy |
Najpierw przejrzyjmy scenariusz słonecznego dnia dotyczący wysyłania e-maila. Użyj punktu końcowego transmisji, aby dostarczyć text i treść HTML. Za kulisami SparkPost zajmuje się tworzeniem ważnego e-maila RFC 5322. SparkPost wstawia zmienne substytucyjne z substitution_data do treści tekstowej i HTML. To jest potężny sposób na generowanie dostosowanej treści dla każdego odbiorcy w wspólnym szablonie.
Oto przykład transmisji z treścią HTML i tekstową z substitution_data.
{ "options": { "open_tracking": true, "click_tracking": true }, "campaign_id": "christmas_campaign", "return_path": "bounces-christmas-campaign@domain.com", "metadata": { "user_type": "students" }, "substitution_data": { "sender": "Big Store Team" }, "recipients": [ { "return_path": "123@bounces.domain.com", "address": { "email": "wilma@domain.com", "name": "Wilma Flintstone" }, "tags": [ "greeting", "prehistoric", "fred", "flintstone" ], "metadata": { "place": "Bedrock" }, "substitution_data": { "customer_type": "Platinum" } } ], "content": { "from": { "name": "Fred Flintstone", "email": "fred@domain.com" }, "subject": "Big Christmas savings!", "reply_to": "Christmas Sales <sales@domain.com>", "headers": { "X-Customer-Campaign-ID": "christmas_campaign" }, "text": "Hi {{address.name}} \nSave big this Christmas in your area {{place}}! \nClick http://www.mysite.com and get huge discount\n Hurry, this offer is only to {{user_type}}\n {{sender}}", "html": "<p>Hi {{address.name}} <br>Save big this Christmas in your area {{place}}! <br>Click <a href=\"http://www.mysite.com\">here</a> and get huge discount</p><p>Hurry, this offer is only to {{user_type}}</p><p>{{sender}}</p>" } }
Przegląd możliwości substytucji
Możliwość | Opis |
|---|---|
Podstawowa substytucja zmiennych | Wstawia pojedyncze dynamiczne wartości do treści tekstowej lub HTML |
Logika warunkowa | Renderuje różną treść w oparciu o ewaluację boolean lub wyrażenia |
Iteracja po tablicach | Przechodzi przez tablice (np. listy plików), aby generować powtarzającą się treść |
Wstawianie surowego HTML ({{{ }}}) | Umożliwia nieprzetworzony HTML w sytuacjach, gdy znacznik pochodzi z źródła danych |
Personalizacja dla każdego odbiorcy | Obsługuje całkowicie unikalną treść dla każdego odbiorcy |
Zastąp tablice danych
Wiele osób zdaje sobie sprawę, że punkty końcowe transmisji i szablonów SparkPost mogą wykonywać prostą podmianę treści w nagłówkach e-maili i treści wiadomości e-mail. Jednak wiele osób pomija możliwość zapewnienia warunkowej treści lub tablic danych, które również mogą być podmieniane. Możesz również dostarczyć unikalną treść dla każdego odbiorcy. W tym przykładzie wysyłamy tablicę unikalnych linków do każdego odbiorcy.
Osiąga się to poprzez dostarczenie tablicy JSON danych, które będą wstawione do treści e-maila. Gdy dane są dostarczone, SparkPost wykorzysta logikę w szablonie do ich wstawienia.
W tym przykładzie SparkPost będzie szukać danych do podmiany o nazwie “files_html” i wykona “for each” na każdym elemencie w tablicy. Utworzy wiersz z wartością “file” w elemencie “files_html”. Zauważ potrójną klamrę wokół “loop_var.file“. To dlatego, że każdy element tablicy zawiera HTML i musimy poinformować serwer, aby używał go tak, jak jest, a nie aby go przekształcał. Część tekstowa będzie prostą etykietą tekstową i linkiem do pliku.
<table> {{each files_html}} <tr> <td>{{{loop_var.file}}}</td> </tr> {{ end }} </table>
Oto kompletny działający przykład:
{ "recipients": [ { "address": { "email": "recipient1@domain.com" }, "substitution_data": { "files_html": [ { "file": "<a href=\"http://domain.com/file1a.txt\">File 1a Description</a>" }, { "file": "<a href=\"http://domain.com/file2a.txt\">File 2a Description</a>" } ], "files_plain": [ { "file": "File 1a -- http://domain.com/file1a.txt" }, { "file": "File 2a -- http://domain.com/file2a.txt" } ] } }, { "address": { "email": "recipient2@domain.com" }, "substitution_data": { "files_html": [ { "file": "<a href=\"http://domain.com/file1b.txt\">File 1b Description</a>" }, { "file": "<a href=\"http://domain.com/file2b.txt\">File 2b Description</a>" } ], "files_plain": [ { "file": "File 1b -- http://domain.com/file1b.txt" }, { "file": "File 2b -- http://domain.com/file2b.txt" } ] } } ], "return_path": "chris@test.domain.com", "content": { "from": { "name": "chris@test.domain.com", "email": "chris@test.domain.com" }, "subject": "Sending with SparkPost is Fun", "html": "<b>Your Files:</b><br>\n<table>\n {{each files_html}}\n <tr><td>{{{loop_var.file}}}</td></tr>\n {{ end }}\n</table>\n", "text": "Your Files:\n{{each files_plain}} {{loop_var.file}}\n{{ end }}\n" } }
Wiele osób zdaje sobie sprawę, że punkty końcowe transmisji i szablonów SparkPost mogą wykonywać prostą podmianę treści w nagłówkach e-maili i treści wiadomości e-mail. Jednak wiele osób pomija możliwość zapewnienia warunkowej treści lub tablic danych, które również mogą być podmieniane. Możesz również dostarczyć unikalną treść dla każdego odbiorcy. W tym przykładzie wysyłamy tablicę unikalnych linków do każdego odbiorcy.
Osiąga się to poprzez dostarczenie tablicy JSON danych, które będą wstawione do treści e-maila. Gdy dane są dostarczone, SparkPost wykorzysta logikę w szablonie do ich wstawienia.
W tym przykładzie SparkPost będzie szukać danych do podmiany o nazwie “files_html” i wykona “for each” na każdym elemencie w tablicy. Utworzy wiersz z wartością “file” w elemencie “files_html”. Zauważ potrójną klamrę wokół “loop_var.file“. To dlatego, że każdy element tablicy zawiera HTML i musimy poinformować serwer, aby używał go tak, jak jest, a nie aby go przekształcał. Część tekstowa będzie prostą etykietą tekstową i linkiem do pliku.
<table> {{each files_html}} <tr> <td>{{{loop_var.file}}}</td> </tr> {{ end }} </table>
Oto kompletny działający przykład:
{ "recipients": [ { "address": { "email": "recipient1@domain.com" }, "substitution_data": { "files_html": [ { "file": "<a href=\"http://domain.com/file1a.txt\">File 1a Description</a>" }, { "file": "<a href=\"http://domain.com/file2a.txt\">File 2a Description</a>" } ], "files_plain": [ { "file": "File 1a -- http://domain.com/file1a.txt" }, { "file": "File 2a -- http://domain.com/file2a.txt" } ] } }, { "address": { "email": "recipient2@domain.com" }, "substitution_data": { "files_html": [ { "file": "<a href=\"http://domain.com/file1b.txt\">File 1b Description</a>" }, { "file": "<a href=\"http://domain.com/file2b.txt\">File 2b Description</a>" } ], "files_plain": [ { "file": "File 1b -- http://domain.com/file1b.txt" }, { "file": "File 2b -- http://domain.com/file2b.txt" } ] } } ], "return_path": "chris@test.domain.com", "content": { "from": { "name": "chris@test.domain.com", "email": "chris@test.domain.com" }, "subject": "Sending with SparkPost is Fun", "html": "<b>Your Files:</b><br>\n<table>\n {{each files_html}}\n <tr><td>{{{loop_var.file}}}</td></tr>\n {{ end }}\n</table>\n", "text": "Your Files:\n{{each files_plain}} {{loop_var.file}}\n{{ end }}\n" } }
Wiele osób zdaje sobie sprawę, że punkty końcowe transmisji i szablonów SparkPost mogą wykonywać prostą podmianę treści w nagłówkach e-maili i treści wiadomości e-mail. Jednak wiele osób pomija możliwość zapewnienia warunkowej treści lub tablic danych, które również mogą być podmieniane. Możesz również dostarczyć unikalną treść dla każdego odbiorcy. W tym przykładzie wysyłamy tablicę unikalnych linków do każdego odbiorcy.
Osiąga się to poprzez dostarczenie tablicy JSON danych, które będą wstawione do treści e-maila. Gdy dane są dostarczone, SparkPost wykorzysta logikę w szablonie do ich wstawienia.
W tym przykładzie SparkPost będzie szukać danych do podmiany o nazwie “files_html” i wykona “for each” na każdym elemencie w tablicy. Utworzy wiersz z wartością “file” w elemencie “files_html”. Zauważ potrójną klamrę wokół “loop_var.file“. To dlatego, że każdy element tablicy zawiera HTML i musimy poinformować serwer, aby używał go tak, jak jest, a nie aby go przekształcał. Część tekstowa będzie prostą etykietą tekstową i linkiem do pliku.
<table> {{each files_html}} <tr> <td>{{{loop_var.file}}}</td> </tr> {{ end }} </table>
Oto kompletny działający przykład:
{ "recipients": [ { "address": { "email": "recipient1@domain.com" }, "substitution_data": { "files_html": [ { "file": "<a href=\"http://domain.com/file1a.txt\">File 1a Description</a>" }, { "file": "<a href=\"http://domain.com/file2a.txt\">File 2a Description</a>" } ], "files_plain": [ { "file": "File 1a -- http://domain.com/file1a.txt" }, { "file": "File 2a -- http://domain.com/file2a.txt" } ] } }, { "address": { "email": "recipient2@domain.com" }, "substitution_data": { "files_html": [ { "file": "<a href=\"http://domain.com/file1b.txt\">File 1b Description</a>" }, { "file": "<a href=\"http://domain.com/file2b.txt\">File 2b Description</a>" } ], "files_plain": [ { "file": "File 1b -- http://domain.com/file1b.txt" }, { "file": "File 2b -- http://domain.com/file2b.txt" } ] } } ], "return_path": "chris@test.domain.com", "content": { "from": { "name": "chris@test.domain.com", "email": "chris@test.domain.com" }, "subject": "Sending with SparkPost is Fun", "html": "<b>Your Files:</b><br>\n<table>\n {{each files_html}}\n <tr><td>{{{loop_var.file}}}</td></tr>\n {{ end }}\n</table>\n", "text": "Your Files:\n{{each files_plain}} {{loop_var.file}}\n{{ end }}\n" } }
Załączniki w zdolnościach transmisyjnych
Końcowy punkt transmisji zapewnia również abstrakcję do wysyłania załączników. Poniżej zobaczysz, że załączniki są określone w tablicy content.attachments , w której każdy obiekt w tablicy opisuje pojedynczy element załącznika. Tak jak wcześniej, SparkPost zajmie się kodowaniem tekstu, HTML, substytucji oraz iterowaniem przez tablicę załączników, aby zakodować poprawnie sformułowaną wiadomość e-mail.
Najlepsze praktyki nakazują unikanie wysyłania załączników, chyba że wyraźnie wymagane jako część twojej usługi.
Poniżej znajdują się wymagane pola dla załącznika:
typ: Typ MIME załącznika
nazwa: Nazwa pliku załącznika
dane: Dane pliku zakodowane w Base64
Wymagane pola dla załączników
Pole | Znaczenie |
|---|---|
typ | Typ MIME załącznika |
nazwa | Nazwa pliku, która pojawi się przed odbiorcą |
dane | Dane ładunku pliku zakodowane w Base64 |
Tak wygląda załącznik wewnątrz bloku treści transmisji:
"content": { "attachments": [ { "type": "audio/mp3", "name": "voicemail.mp3", "data": "TVAzIERhdGEK" } ] }
Możesz także wysyłać „obrazy w linii” w transmisji. Są one bardzo podobne do załączników i są określone w tablicy content.inline_images , w której każdy z obiektów inline_image jest podobny do obiektu załącznika pokazano powyżej.
Końcowy punkt transmisji zapewnia również abstrakcję do wysyłania załączników. Poniżej zobaczysz, że załączniki są określone w tablicy content.attachments , w której każdy obiekt w tablicy opisuje pojedynczy element załącznika. Tak jak wcześniej, SparkPost zajmie się kodowaniem tekstu, HTML, substytucji oraz iterowaniem przez tablicę załączników, aby zakodować poprawnie sformułowaną wiadomość e-mail.
Najlepsze praktyki nakazują unikanie wysyłania załączników, chyba że wyraźnie wymagane jako część twojej usługi.
Poniżej znajdują się wymagane pola dla załącznika:
typ: Typ MIME załącznika
nazwa: Nazwa pliku załącznika
dane: Dane pliku zakodowane w Base64
Wymagane pola dla załączników
Pole | Znaczenie |
|---|---|
typ | Typ MIME załącznika |
nazwa | Nazwa pliku, która pojawi się przed odbiorcą |
dane | Dane ładunku pliku zakodowane w Base64 |
Tak wygląda załącznik wewnątrz bloku treści transmisji:
"content": { "attachments": [ { "type": "audio/mp3", "name": "voicemail.mp3", "data": "TVAzIERhdGEK" } ] }
Możesz także wysyłać „obrazy w linii” w transmisji. Są one bardzo podobne do załączników i są określone w tablicy content.inline_images , w której każdy z obiektów inline_image jest podobny do obiektu załącznika pokazano powyżej.
Końcowy punkt transmisji zapewnia również abstrakcję do wysyłania załączników. Poniżej zobaczysz, że załączniki są określone w tablicy content.attachments , w której każdy obiekt w tablicy opisuje pojedynczy element załącznika. Tak jak wcześniej, SparkPost zajmie się kodowaniem tekstu, HTML, substytucji oraz iterowaniem przez tablicę załączników, aby zakodować poprawnie sformułowaną wiadomość e-mail.
Najlepsze praktyki nakazują unikanie wysyłania załączników, chyba że wyraźnie wymagane jako część twojej usługi.
Poniżej znajdują się wymagane pola dla załącznika:
typ: Typ MIME załącznika
nazwa: Nazwa pliku załącznika
dane: Dane pliku zakodowane w Base64
Wymagane pola dla załączników
Pole | Znaczenie |
|---|---|
typ | Typ MIME załącznika |
nazwa | Nazwa pliku, która pojawi się przed odbiorcą |
dane | Dane ładunku pliku zakodowane w Base64 |
Tak wygląda załącznik wewnątrz bloku treści transmisji:
"content": { "attachments": [ { "type": "audio/mp3", "name": "voicemail.mp3", "data": "TVAzIERhdGEK" } ] }
Możesz także wysyłać „obrazy w linii” w transmisji. Są one bardzo podobne do załączników i są określone w tablicy content.inline_images , w której każdy z obiektów inline_image jest podobny do obiektu załącznika pokazano powyżej.
Załączniki w szablonach
Teraz, gdy mamy właściwe tło do wysyłania załączników za pomocą punktu końcowego transmisji, przyjrzyjmy się, jak zrobić to za pomocą szablonów. W chwili pisania tego tekstu nie ma abstrakcji załączników, jaką znajdziesz dla transmisji w linii. Można by dojść do wniosku, że nie można tworzyć szablonów z załącznikami. Byłbyś częściowo w błędzie, ale istnieje obejście, chociaż nie będziesz już izolowany od formatu RFC 5322.
Możesz osiągnąć załączniki w szablonach, kodując treści RFC 5322 samodzielnie, co obejmuje załączniki. Dobrą wiadomością jest to, że nie utracisz możliwości używania danych zastępczych w swoich nagłówkach e-mail, HTML i częściach tekstowych. Pamiętaj, że ten typ szablonu ogranicza substytucje do nagłówków oraz pierwszej części HTML i pierwszej części tekstowej.
Ograniczenia szablonów RFC 5322
Ograniczenie | Opis |
|---|---|
Substytucje ograniczone | Stosują się tylko do nagłówków, pierwszej części HTML i pierwszej części tekstowej |
Ręczne zarządzanie MIME | Programista musi skonstruować wszystkie granice MIME i części załączników |
Wyższy koszt utrzymania | Trudniejsze do aktualizacji, audytu i wersjonowania |
Nieprzyjazne dla abstrakcji | Obchodzi wygodę systemu szablonów SparkPost |
Oto przykład, jak to zrobić.
RFC822 E-mail
Utwórz swój e-mail RFC 5322 z danymi zastępczymi, które chcesz. Stworzyłem ten w swoim kliencie pocztowym i wysłałem go do siebie. Gdy go otrzymałem, skopiowałem źródło i zastąpiłem pola, które chcę dynamicznie zastąpić.
MIME-Version: 1.0 Reply-To: {{replyto}} Subject: {{subject}} From: {{from}} To: {{address.email}} Content-Type: multipart/mixed; boundary="001a113c48b0b89d92052d3051da" --001a113c48b0b89d92052d3051da Content-Type: multipart/alternative; boundary="001a113c48b0b89d89052d3051d8" --001a113c48b0b89d89052d3051d8 Content-Type: text/plain; charset=UTF-8 Email with a *text attachment*. {{body2}} --001a113c48b0b89d89052d3051d8 Content-Type: text/html; charset=UTF-8 <div dir="ltr"> <div>Email with a <i>text attachment</i>.</div> {{body1}} <
Ostatnia część MIME w tej wiadomości, którą zobaczysz, to Content-Disposition: attachment; filename=myfile.txt”. To tam definiowana jest nazwa pliku. Zawartość twojego załącznika na pewno będzie znacznie bardziej złożona, ale ten przykład stara się to uprościć.
Teraz, gdy mamy właściwe tło do wysyłania załączników za pomocą punktu końcowego transmisji, przyjrzyjmy się, jak zrobić to za pomocą szablonów. W chwili pisania tego tekstu nie ma abstrakcji załączników, jaką znajdziesz dla transmisji w linii. Można by dojść do wniosku, że nie można tworzyć szablonów z załącznikami. Byłbyś częściowo w błędzie, ale istnieje obejście, chociaż nie będziesz już izolowany od formatu RFC 5322.
Możesz osiągnąć załączniki w szablonach, kodując treści RFC 5322 samodzielnie, co obejmuje załączniki. Dobrą wiadomością jest to, że nie utracisz możliwości używania danych zastępczych w swoich nagłówkach e-mail, HTML i częściach tekstowych. Pamiętaj, że ten typ szablonu ogranicza substytucje do nagłówków oraz pierwszej części HTML i pierwszej części tekstowej.
Ograniczenia szablonów RFC 5322
Ograniczenie | Opis |
|---|---|
Substytucje ograniczone | Stosują się tylko do nagłówków, pierwszej części HTML i pierwszej części tekstowej |
Ręczne zarządzanie MIME | Programista musi skonstruować wszystkie granice MIME i części załączników |
Wyższy koszt utrzymania | Trudniejsze do aktualizacji, audytu i wersjonowania |
Nieprzyjazne dla abstrakcji | Obchodzi wygodę systemu szablonów SparkPost |
Oto przykład, jak to zrobić.
RFC822 E-mail
Utwórz swój e-mail RFC 5322 z danymi zastępczymi, które chcesz. Stworzyłem ten w swoim kliencie pocztowym i wysłałem go do siebie. Gdy go otrzymałem, skopiowałem źródło i zastąpiłem pola, które chcę dynamicznie zastąpić.
MIME-Version: 1.0 Reply-To: {{replyto}} Subject: {{subject}} From: {{from}} To: {{address.email}} Content-Type: multipart/mixed; boundary="001a113c48b0b89d92052d3051da" --001a113c48b0b89d92052d3051da Content-Type: multipart/alternative; boundary="001a113c48b0b89d89052d3051d8" --001a113c48b0b89d89052d3051d8 Content-Type: text/plain; charset=UTF-8 Email with a *text attachment*. {{body2}} --001a113c48b0b89d89052d3051d8 Content-Type: text/html; charset=UTF-8 <div dir="ltr"> <div>Email with a <i>text attachment</i>.</div> {{body1}} <
Ostatnia część MIME w tej wiadomości, którą zobaczysz, to Content-Disposition: attachment; filename=myfile.txt”. To tam definiowana jest nazwa pliku. Zawartość twojego załącznika na pewno będzie znacznie bardziej złożona, ale ten przykład stara się to uprościć.
Teraz, gdy mamy właściwe tło do wysyłania załączników za pomocą punktu końcowego transmisji, przyjrzyjmy się, jak zrobić to za pomocą szablonów. W chwili pisania tego tekstu nie ma abstrakcji załączników, jaką znajdziesz dla transmisji w linii. Można by dojść do wniosku, że nie można tworzyć szablonów z załącznikami. Byłbyś częściowo w błędzie, ale istnieje obejście, chociaż nie będziesz już izolowany od formatu RFC 5322.
Możesz osiągnąć załączniki w szablonach, kodując treści RFC 5322 samodzielnie, co obejmuje załączniki. Dobrą wiadomością jest to, że nie utracisz możliwości używania danych zastępczych w swoich nagłówkach e-mail, HTML i częściach tekstowych. Pamiętaj, że ten typ szablonu ogranicza substytucje do nagłówków oraz pierwszej części HTML i pierwszej części tekstowej.
Ograniczenia szablonów RFC 5322
Ograniczenie | Opis |
|---|---|
Substytucje ograniczone | Stosują się tylko do nagłówków, pierwszej części HTML i pierwszej części tekstowej |
Ręczne zarządzanie MIME | Programista musi skonstruować wszystkie granice MIME i części załączników |
Wyższy koszt utrzymania | Trudniejsze do aktualizacji, audytu i wersjonowania |
Nieprzyjazne dla abstrakcji | Obchodzi wygodę systemu szablonów SparkPost |
Oto przykład, jak to zrobić.
RFC822 E-mail
Utwórz swój e-mail RFC 5322 z danymi zastępczymi, które chcesz. Stworzyłem ten w swoim kliencie pocztowym i wysłałem go do siebie. Gdy go otrzymałem, skopiowałem źródło i zastąpiłem pola, które chcę dynamicznie zastąpić.
MIME-Version: 1.0 Reply-To: {{replyto}} Subject: {{subject}} From: {{from}} To: {{address.email}} Content-Type: multipart/mixed; boundary="001a113c48b0b89d92052d3051da" --001a113c48b0b89d92052d3051da Content-Type: multipart/alternative; boundary="001a113c48b0b89d89052d3051d8" --001a113c48b0b89d89052d3051d8 Content-Type: text/plain; charset=UTF-8 Email with a *text attachment*. {{body2}} --001a113c48b0b89d89052d3051d8 Content-Type: text/html; charset=UTF-8 <div dir="ltr"> <div>Email with a <i>text attachment</i>.</div> {{body1}} <
Ostatnia część MIME w tej wiadomości, którą zobaczysz, to Content-Disposition: attachment; filename=myfile.txt”. To tam definiowana jest nazwa pliku. Zawartość twojego załącznika na pewno będzie znacznie bardziej złożona, ale ten przykład stara się to uprościć.
Przechowywany szablon
Gdy masz ważny adres e-mail RFC 5322, przechowaj go używając formy email_rfc822 punktu końcowego szablonu zamiast używać pól text i HTML. Oto przykład tego, jak wygląda content dla tej wiadomości:
{ "content": { "email_rfc822": "MIME-Version: 1.0\nReply-To: {{replyto}}\nSubject: {{subject}}\nFrom: {{from}}\nTo: {{address.email}}\nContent-Type: multipart/mixed; boundary=001a113c48b0b89d92052d3051da\n\n--001a113c48b0b89d92052d3051da\nContent-Type: multipart/alternative; boundary=001a113c48b0b89d89052d3051d8\n\n--001a113c48b0b89d89052d3051d8\nContent-Type: text/plain; charset=UTF-8\n\nEmail with a *text attachment*.\n\n{{body2}}\n\n--001a113c48b0b89d89052d3051d8\nContent-Type: text/html; charset=UTF-8\n\n<div dir=\"ltr\"><div>Email with a <i>text attachment</i>.</div>\n\n{{body1}}\n</div>\n\n--001a113c48b0b89d89052d3051d8--\n--001a113c48b0b89d92052d3051da\nContent-Type: text/plain; charset=US-ASCII; name=\"myfile.txt\"\nContent-Disposition: attachment; filename=\"myfile.txt\"\nContent-Transfer-Encoding: base64\nX-Attachment-Id: f_ild455ce0\n\nVGhpcyBpcyBteSBzaW1wbGUgdGV4dCBmaWxlLgo=\n--001a113c48b0b89d92052d3051da--" }, "name": "_TMP_TEMPLATE_TEST" }
Gdy żądanie zostanie zakończone, SparkPost odpowie unikalnym identyfikatorem dla twojego nowego szablonu. Na przykład xxxxxxx.
Gdy masz ważny adres e-mail RFC 5322, przechowaj go używając formy email_rfc822 punktu końcowego szablonu zamiast używać pól text i HTML. Oto przykład tego, jak wygląda content dla tej wiadomości:
{ "content": { "email_rfc822": "MIME-Version: 1.0\nReply-To: {{replyto}}\nSubject: {{subject}}\nFrom: {{from}}\nTo: {{address.email}}\nContent-Type: multipart/mixed; boundary=001a113c48b0b89d92052d3051da\n\n--001a113c48b0b89d92052d3051da\nContent-Type: multipart/alternative; boundary=001a113c48b0b89d89052d3051d8\n\n--001a113c48b0b89d89052d3051d8\nContent-Type: text/plain; charset=UTF-8\n\nEmail with a *text attachment*.\n\n{{body2}}\n\n--001a113c48b0b89d89052d3051d8\nContent-Type: text/html; charset=UTF-8\n\n<div dir=\"ltr\"><div>Email with a <i>text attachment</i>.</div>\n\n{{body1}}\n</div>\n\n--001a113c48b0b89d89052d3051d8--\n--001a113c48b0b89d92052d3051da\nContent-Type: text/plain; charset=US-ASCII; name=\"myfile.txt\"\nContent-Disposition: attachment; filename=\"myfile.txt\"\nContent-Transfer-Encoding: base64\nX-Attachment-Id: f_ild455ce0\n\nVGhpcyBpcyBteSBzaW1wbGUgdGV4dCBmaWxlLgo=\n--001a113c48b0b89d92052d3051da--" }, "name": "_TMP_TEMPLATE_TEST" }
Gdy żądanie zostanie zakończone, SparkPost odpowie unikalnym identyfikatorem dla twojego nowego szablonu. Na przykład xxxxxxx.
Gdy masz ważny adres e-mail RFC 5322, przechowaj go używając formy email_rfc822 punktu końcowego szablonu zamiast używać pól text i HTML. Oto przykład tego, jak wygląda content dla tej wiadomości:
{ "content": { "email_rfc822": "MIME-Version: 1.0\nReply-To: {{replyto}}\nSubject: {{subject}}\nFrom: {{from}}\nTo: {{address.email}}\nContent-Type: multipart/mixed; boundary=001a113c48b0b89d92052d3051da\n\n--001a113c48b0b89d92052d3051da\nContent-Type: multipart/alternative; boundary=001a113c48b0b89d89052d3051d8\n\n--001a113c48b0b89d89052d3051d8\nContent-Type: text/plain; charset=UTF-8\n\nEmail with a *text attachment*.\n\n{{body2}}\n\n--001a113c48b0b89d89052d3051d8\nContent-Type: text/html; charset=UTF-8\n\n<div dir=\"ltr\"><div>Email with a <i>text attachment</i>.</div>\n\n{{body1}}\n</div>\n\n--001a113c48b0b89d89052d3051d8--\n--001a113c48b0b89d92052d3051da\nContent-Type: text/plain; charset=US-ASCII; name=\"myfile.txt\"\nContent-Disposition: attachment; filename=\"myfile.txt\"\nContent-Transfer-Encoding: base64\nX-Attachment-Id: f_ild455ce0\n\nVGhpcyBpcyBteSBzaW1wbGUgdGV4dCBmaWxlLgo=\n--001a113c48b0b89d92052d3051da--" }, "name": "_TMP_TEMPLATE_TEST" }
Gdy żądanie zostanie zakończone, SparkPost odpowie unikalnym identyfikatorem dla twojego nowego szablonu. Na przykład xxxxxxx.
Podsumowanie
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 wspiera wysyłanie e-maili na Apple Watch” lub zapoznać się z składnią substytucji, aby zobaczyć, jak można jej używać z „jeśli to, to tamto”, „wyrażenia w warunkach” lub „iteracja tablic” bezpośrednio w treści szablonu lub transmisji.
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 wspiera wysyłanie e-maili na Apple Watch” lub zapoznać się z składnią substytucji, aby zobaczyć, jak można jej używać z „jeśli to, to tamto”, „wyrażenia w warunkach” lub „iteracja tablic” bezpośrednio w treści szablonu lub transmisji.
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 wspiera wysyłanie e-maili na Apple Watch” lub zapoznać się z składnią substytucji, aby zobaczyć, jak można jej używać z „jeśli to, to tamto”, „wyrażenia w warunkach” lub „iteracja tablic” bezpośrednio w treści szablonu lub transmisji.



