Czy podczas tworzenia e-maili w formacie HTML powinniśmy używać tagów html, head, body?

113

W widokach e-maili zwykle robię coś takiego ...

<dl>
   <dt>Name</dt>
   <dd>Value</dd>
</dl>

Powinienem to zrobić w ten sposób?

<html>
  <head></head>
  <body>
    <dl>
       <dt>Name</dt>
       <dd>Value</dd>
    </dl>
  </body>
</html>

Innymi słowy, jakbym zaznaczał samodzielny dokument?

Myślę, że mogę spokojnie założyć, że jakikolwiek internetowy klient poczty e-mail go rozebrze?

Jaka jest właściwa droga?

Alex
źródło
Na co warto, Thunderbird wyprowadza html, headoraz bodytagi w swoich wiadomościach.
palswim

Odpowiedzi:

44

Właściwy sposób to postępować zgodnie ze standardem HTML . Można zweryfikować swoją stronę HTML tutaj .

Twój klient pocztowy powinien postępować zgodnie z nim i powinien wyrzucić to, co nie jest obsługiwane lub co jest niepewne, jak javascript.

AKTUALIZACJA: po kilku głosach negatywnych od ludzi, którzy złoszczą się, gdy powiesz im przestrzeganie standardów, przedstawię kilka powodów, dla których poniższe standardy mogą być tutaj korzystne:

  1. poczta internetowa, która chce wyświetlać Twoją pocztę jako całą stronę, może zachować Twój format.
  2. poczta internetowa po prostu usunie tagi i atrybuty, których nie potrzebuje. Ale nigdy nie możesz wiedzieć, które z nich.
  3. Łatwiej jest znaleźć komponenty (po stronie serwera), które są zgodne ze standardami formatowania, a przez to mniej podatne na błędy. Parsery niezgodne ze standardami mogą się zepsuć, przez co Twój e-mail nie zostanie wyświetlony.
mschonaker
źródło
54
-1 Właściwy sposób to przetestowanie go u odpowiednich klientów. Chociaż klienci pocztowi powinni przestrzegać standardów, praktycznie żaden z nich tego nie robi.
Dan wieje
27
mschonaker ma rację. Jeśli wszyscy zaczną podążać za standardami, użycie będzie ... no cóż ... znormalizowane. W przeciwnym razie wszyscy programiści będą musieli zaimplementować hacki dla smaku dnia (myśląc o tobie, IE6!). WŁAŚCIWĄ drogą jest przestrzeganie standardów.
cjcela
4
Nie ma standardu dla „e-maili html”. Wskazujesz na standard dla html.
rds
2
Zgadzam się z tą odpowiedzią, podczas gdy wielu klientów i tak renderuje nieprawidłowy kod HTML, najbardziej niezawodnym formatem, który będzie renderowany na większości klientów, jest posiadanie prawidłowego HTML!
markmnl
3
To jest poprawna odpowiedź. Typ MIME części lub treści to text / html. Niezależnie od kontekstu ten typ powinien być przestrzegany przez standardy, czy to przeglądarka internetowa, czy klient poczty elektronicznej. @cjcela ma dobry pomysł, gdybyśmy wszyscy utknęli w obsłudze IE8, sieć nie rozwinęłaby się. Jeśli nie będziemy trzymać się standardów, w jaki sposób będzie ewoluował renderowanie HTML w poczcie? To, co powinieneś zrobić, to trzymać się standardów, ale pamiętaj, że rzeczy takie jak arkusze stylów w heads mogą być ignorowane i mieć wdzięczną rezerwę.
Brett Ryan
33

To, czy umieścisz tagi html / head / body, czy nie, jest całkowicie nieistotne - są one zawsze opcjonalne i nie wpłyną w żaden sposób na renderowanie dokumentu.

Najważniejsze jest to, czy tryb dziwactwa jest włączony, czy nie. Niestety nie możesz tego kontrolować w ustawieniach poczty internetowej. Stoły i style inline to twoi przyjaciele. Najlepszym rozwiązaniem jest przetestowanie jak największej liczby klientów poczty internetowej i komputerów stacjonarnych.

Josh Lee
źródło
4
„są one zawsze opcjonalne i nie wpłyną na renderowanie dokumentu” to po prostu nieprawda, wiele renderów jest mniej odpornych na błędy i może całkiem słusznie zdecydować się nie renderować nieprawidłowego kodu HTML.
markmnl
Co się dzieje, gdy klient poczty ma łącze „Wyświetl tę wiadomość e-mail w przeglądarce”? Wyrenderowanie nieprawidłowego kodu HTML będzie zależeć od domyślnej przeglądarki.
Sergey
13

Wiele postów w tym wątku jest dość starych, w wyniku czego nie są już aktualne.

W dzisiejszych czasach wiadomości e-mail w formacie HTML powinny zawierać deklarację typu doctype, html i body, jeśli zamierzasz zrobić coś wymyślnego.

Istnieje wiele poradników na ten temat, które mogą pomóc w nauce poprawnego kodowania wiadomości e-mail w formacie HTML, ale większość z nich pomija specyfikę typu dokumentu, w związku z czym natknąłem się na Twoje pytanie.

Proponuję przeczytać następujące 2 posty, które pochodzą od renomowanych zespołów zaznajomionych z różnymi problemami:

ujęcie monitora kampanii

e-mail w sprawie przyjęcia kwasu

kamelkev
źródło
Zabawne ... mówisz, że posty tutaj są stare i umieszczasz link w swojej odpowiedzi na post na blogu, który ma 7 lat!
Alexis Wilke
2
Zrobiłem to, ale posty na blogu, które zostały wybrane, zostały starannie wybrane ze względu na ich autorytatywny charakter i raczej patrzyli w przyszłość. Opinie, które wyrażali, były wtedy dość rzadkie, zwłaszcza gdy kontrastują z przestarzałymi twierdzeniami, które są podzielane przez inne odpowiedzi tutaj.
kamelkev
@AlexisWilke i jeden z linków był tu nawet wspomniany 3 lata wcześniej! Ale przynajmniej jest teraz w odpowiedzi, więc mogę spróbować podbić listę z pozytywnym głosem
Hashbrown
11

Zależy całkowicie od klienta poczty e-mail, który je otrzymuje. Z mojego doświadczenia wynika, że ​​większość klientów poczty e-mail, które będą interpretować HTML, nie przejmuje się tym, czy masz tagi typu full body / head / html itp. W rzeczywistości nawet nie potrzebujesz tych tagów dla większości przeglądarek. Musisz mieć tagi head, aby zawierały styl / tytuł, itp. W przeciwnym razie nie są one tak naprawdę konieczne. Nigdy nie uważałem ich za konieczne.

Pigułki wybuchowe
źródło
3
Tagi html / head / body są zawsze opcjonalne.
Josh Lee,
10

Jest jedna rzecz, którą wiem, że jest prawdą: używanie tagów otwierających i zamykających HTML pomoże w ogólnej ocenie spamu, ponieważ wiele takich filtrów opartych na urządzeniach i zaporach programowych dodaje punkt do wiadomości e-mail, która używa html, ale nie używa tagi otwierające i zamykające.

Greg
źródło
11
Czy masz jakieś dowody na poparcie tego twierdzenia?
Alex
10
Zaobserwowałem to samo zachowanie w ciągu ostatnich kilku dni, po prostu „przeglądając oryginał” w Gmailu. Tam mogłem zobaczyć wynik spamu dla wiadomości e-mail bez otwierających tagów zamykających: np. X-Spam-Level: * | Raport X-Spam: wynik = 1,6 testów = HTML_MESSAGE, HTML_MIME_NO_HTML_TAG, MIME_HTML_ONLY | X-Spam-Score: 1 - np. Zobacz wiki.apache.org/spamassassin/Rules/HTML_MIME_NO_HTML_TAG
Richard Hollis
1
Widziałem to również, a niektóre firmy mają tak niski próg kwarantanny spamu, że brak znaczników HTML może wystarczyć, aby zapobiec przedostawaniu się wiadomości e-mail. Ta strona nie zawiera dokładnych dostępnych ustawień, ale widziałem, że oprogramowanie zostawia wiadomość o regule „HTML_MIME_NO_HTML_TAG” z opisem „Wiadomość tylko w formacie HTML, ale nie ma tagu HTML”. techlib.barracuda.com/BSF/SpamScoring
JHS
3

Myślę, że nie ma właściwego sposobu, ale staram się, aby wiadomość e-mail była widoczna w jak największej liczbie czytników poczty e-mail.

Zwykle sprawdzam e-maile w Thunderbirdzie, ponieważ Outlook wybacza więcej.

W Thunderbirdzie jest to kod HTML wiadomości e-mail (mam rozszerzenie, które wyświetla kod HTML)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body bgcolor="#ffffff" text="#000000">
        This is the body text<br>
<div class="moz-signature"><i><br>
<br>
Regards<br>
Alex<br>
</i></div>
</body>
</html>

Swoją drogą, zawsze, kiedy mogę, używam zwykłego tekstu e-mail do wszystkich moich formularzy internetowych. Miałem wiele problemów z wiadomościami e-mail na urządzeniach Blackberry przy użyciu wiadomości e-mail w formacie HTML + zwykłego tekstu.

Alex Angelico
źródło