Czy wiadomość e-mail obsługuje JavaScript?

146

Czy wiadomość e-mail obsługuje JavaScript?

senthil
źródło
38
To nie zasługuje na -1
kikito
1
Czy docelowy program pocztowy to Outlook? Thunderbird? Gmail? Hotmail? Wszystkie powyższe? Inni? Różne programy pocztowe różnie renderują wiadomości e-mail.
WonderWorker
1
Właśnie widziałem, że faceci z rockettheme odliczają, więc dni, godziny, minuty i sekundy, a grafika też się animują ... niesamowite, co jest teraz możliwe. Nie wiem, jak inaczej mogliby to robić. Obserwowane w kliencie poczty Mac.
wylądował
2
Znalazłem domenę i dostałem to - motionmailapp.com
wylądowałem
3
@landed Właśnie zobaczyłem to samo w e-mailu z WordPressa. Okazuje się, że jest to po prostu dynamicznie generowany GIF, który rozpoczyna odliczanie od momentu pobrania (i resetuje się po 45 sekundach - myślę, że jeśli nie kliknąłeś w ciągu 45 sekund, prawdopodobnie już zamknąłeś wiadomość e-mail).
Lionel Rowe

Odpowiedzi:

49

http://en.wikipedia.org/wiki/Comparison_of_e-mail_clients

Wydaje się, że stare klienty , takie jak Lotus Notes, Mozilla Thunderbird, Outlook Express i Windows Live Mail, obsługiwały jakiś rodzaj wykonywania JavaScript. Nic innego nie działa.

Wydaje się, że to zły pomysł z punktu widzenia bezpieczeństwa, więc spodziewałbym się, że będzie to funkcja, która nie zawsze będzie dostępna, nawet w przypadku tych klientów.

MatthewMartin
źródło
9
„Lotus Notes, Mozilla Thunderbird, Outlook Express i Windows Live Mail wydają się obsługiwać jakiś rodzaj wykonywania JavaScript” - w skryptach szablonów wiadomości, a nie w otrzymanych wiadomościach e-mail.
Quentin
2
Wow, ci klienci są teraz tak starzy, że linki do tego, jak się zachowywali, wygasają, nie mogę tego potwierdzić ani zaprzeczyć. Sześć lat później zdziwiłbym się, gdyby nadal w użyciu był jeden klient poczty e-mail, który celowo ma włączoną dowolną funkcję wykonywania skryptów.
MatthewMartin
18

Nie, ogólnie rzecz biorąc, czytniki e-maili nie pozwalają na obsługę javascript.

jsight
źródło
2
a co z Gmailem w przeglądarce Chrome?
Nicolas S.Xu
1
@ NicolasS.Xu Gmail usuwa JavaScript z poczty przed przekazaniem jej do przeglądarki. Więc JS nie działa. Testowałem Gmaila w Firefoksie 56 i Chrome 61. Sprawdziłem również kod w narzędziach dla webmasterów, kod JS został usunięty.
Christopher K.
18

Inni respondenci sugerowali, że odpowiedź brzmi „nie”.

Z drugiej strony, załącznik HTML prawdopodobnie zostanie otwarty w środowisku obsługującym JavaScript.

EDYCJA: Sugerowano, że nie odpowiedziałem poprawnie na pytanie, więc tutaj jest bardziej kompletny wysiłek.

Podsumowanie: Spodziewam się, że wielu lub większość użytkowników otrzymujących wiadomość e-mail w formacie html zawierającą osadzony kod JavaScript zobaczy, jak działa i przeprowadzi testy, aby potwierdzić, że jest to prawdą w niektórych środowiskach. Ale JavaScript BĘDZIE zablokowany dla niektórych użytkowników.

Protokoły (w szczególności RFC2854) wyraźnie odnoszą się do skryptów (w ramach typu treści wiadomości text / html) za pomocą stwierdzenia, że:

Ponadto wprowadzenie języków skryptowych i możliwości interaktywnych w HTML 4.0 wprowadziło szereg zagrożeń bezpieczeństwa związanych z automatycznym wykonywaniem programów napisanych przez nadawcę, ale zinterpretowanych przez odbiorcę. Agenci użytkownika wykonujący takie skrypty lub programy muszą bardzo uważać, aby mieć pewność, że niezaufane oprogramowanie zostanie uruchomione w chronionym środowisku.

Czyli protokoły obsługują JavaScript, ale które programy użytkownika obsługują?

Mój (starożytny) czytnik e-maili używa tabeli, aby określić, którego oprogramowania przeglądarki użyć dla każdego typu MIME, kierując zawartość html do mojej ulubionej przeglądarki internetowej. Prawie wszystkie obecne przeglądarki internetowe obsługują JavaScript (a niektóre generują straszne ostrzeżenia, gdy próbujesz go wyłączyć!) Czy współczesne agenty poczty e-mail zawierają wewnętrzne interpretery HTML, a jeśli tak, to czy javascript jest włączony czy wyłączony? Sprawdziłem dokumentację Thunderbirda i stwierdziłem, że javascript wydaje się być domyślnie włączony, ale można go wyłączyć: http://codeverge.com/mozilla.support.thunderbird/simple-html-tags-reference-docume/2030160

Zauważyłem, że niektórzy (? Wielu?) Użytkowników uzyskują teraz dostęp do poczty e-mail bezpośrednio z przeglądarki (jedną z takich platform jest poczta internetowa), zamiast korzystać z oddzielnego oprogramowania pocztowego. Wszystkie takie platformy, które do tej pory testowałem, obsługują Javascript osadzony w html wiadomości e-mail. Jednak niektóre takie środowiska, w zależności od ustawień bezpieczeństwa użytkownika, nie pobierają automatycznie zewnętrznych linków (JavaScript, obrazów lub innych), więc mogą uruchamiać zewnętrzny JavaScript tylko z pliku, który jest załącznikiem do wiadomości. To samo dotyczy dowolnego czytnika poczty e-mail offline na urządzeniu bez bieżącego połączenia z Internetem.

Powyższe dotyczy javascript osadzonego w głównej części treści wiadomości e-mail. Można również wyraźnie podać html jako „załącznik”, który po zapisaniu i późniejszym otwarciu byłby wyświetlany w przeglądarce internetowej, przy czym JavaScript jest dostępny z dużym prawdopodobieństwem. Dlatego można dołączyć drugą kopię wiadomości e-mail z włączoną obsługą JavaScript jako załącznik HTML z alternatywnym tekstem / zwykłą treścią główną i / lub tagiem w głównym tekście / html kierującym użytkownika do załącznika.

Myślałem o tym, ponieważ niektórzy z moich znajomych nalegają na wysłanie mi „kartki z życzeniami e-mail”, które składają się z wiadomości tekstowej kierującej mnie do linku, który uznałem za tak niezadowalający, że z zasady odmawiam nawet rozważenia jego załadowania . Napisałem i wysłałem e-maile z życzeniami z interaktywną grafiką i muzyką, a nawet z grami używającymi wbudowanego javascript i byłem zadowolony z wyniku.

Dlatego uważam, że poprawna odpowiedź brzmi „Tak” zarówno na tej podstawie, że protokoły konkretnie odnoszą się do skryptów, jak i na podstawie tego, że wszyscy agenci poczty e-mail, których osobiście używam, uruchamiali JavaScript w moich testowych e-mailach.

Robert Morewood
źródło
2
Nie podajesz żadnej konkretnej listy klientów, na których pomyślnie przetestowałeś JS iz jakim kodem JS. Sprawdziłem Thunderbirda 52.4.0 z ustawieniem „Oryginalny HTML” i zignorował JS <script> document.write('test'); </script>w moich testowych e-mailach. To samo dotyczy Outlooka dla Androida 2.2.44, K-9 dla Androida 5.208, Gmaila webmailer (testowano 06.11.2017) i Roundcube webmailer 0.9.5. Zgodziłbym się więc z tymi, którzy mówią, że to nie działa u większości (współczesnych) klientów. Prawdą jest, że większość użytkowników korzysta z poczty internetowej, ale nie bez powodu wydają się one usuwać JS z wiadomości przed przekazaniem ich do przeglądarki.
Christopher K.
1
Ponieważ twój link do "dokumentacji" Thunderbirda nie jest w ogóle dokumentacją, ale odnosi się do pytania zadanego przez użytkowników, szukałem oficjalnej dokumentacji i znalazłem to: developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Releases / 3 - Mówi się, że JS w e-mailach został upuszczony w Thunderbirdzie 3.
Christopher K.
14

Krótka odpowiedź

Nie


Opisowa odpowiedź

To zależy. Jednak e-mail nie gwarantuje, że zachowa się tak, jak chcesz. Różni klienci poczty e-mail różnie obsługują JS. Większość nowszych klientów poczty e-mail nie obsługuje żadnego z nich, ponieważ obsługa wykonywania skryptów w aplikacji komputerowej, która zawiera tak dużo twoich danych osobowych, jest potencjalnie bardzo niebezpieczna.

Miałem przypadek użycia, w którym musiałem użyć JS w e-mailu. Wypróbowałem również na kliencie internetowym programu Outlook i na komputerze stacjonarnym i okazuje się, że program Outlook po prostu usuwa część skryptową wiadomości e-mail w formacie HTML. Może istnieć inny klient poczty e-mail, który obsługuje wykonywanie JS, ale biorąc pod uwagę, że nie można kontrolować klienta, w którym wiadomość e-mail byłaby wyświetlana na komputerze klienckim, osadzanie jakichkolwiek skryptów w wiadomości e-mail w formacie HTML nie jest dobrym pomysłem.

Zaleca się, aby poczta e-mail w formacie HTML była tak prosta, jak to tylko możliwe, bez JS i najmniej CSS, z którymi możesz zrobić (ponieważ, ponownie, różni klienci poczty e-mail mają również różne wsparcie dla CSS), np .: klient sieciowy Outlook nie rozpoznawał nawet HTML tag przycisku w wiadomości e-mail. Musiałem użyć tagu kotwicy i trochę CSS na nim, aby naśladować wyświetlanie przycisku.


Podsumowując - nie polegaj na JavaScript podczas pracy z treścią wiadomości e-mail w formacie HTML.

Ketan R
źródło
4

Nie zamierzasz pobierać wykonywalnego JavaScript na serwer ani do klienta poczty. Ale e-maile SĄ linkami do wsparcia, zawsze możesz zamieścić linki do treści w wiadomości e-mail.

Sam152
źródło
3

W przypadku większości klientów pocztowych nie.

Mervyn
źródło
2

Może tak, ale klienci poczty nie przeczytają tego, a serwery pocztowe mogą go odrzucić. Więc zostaw to.

Ed B.
źródło
1

JavaScript nie jest obsługiwany w wiadomościach e-mail.

Neil Knight
źródło
2
To nie jest prawda. Przynajmniej Outlook i Outlook Express obsługują Javascript, co jest jednym z wielu powodów, dla których należy ich unikać (ze względów bezpieczeństwa).
PauliL
1
@PauliL: To zależy od tego, czy zezwalają na to ustawienia strefy Witryny z ograniczeniami.
Neil Knight
0

Możesz wyświetlić wiadomość e-mail z JavaScriptem współpracującą z Windows Live Mail, ale nie możesz dodać JavaScript do nowej wiadomości e-mail, którą chcesz wysłać. JavaScript działa również z zapisanymi plikami .eml. Mozilla Thunderbird w wersji 60.7.0 nie może wyświetlać ani dodawać skryptów JavaScript. (Jeśli zapiszesz plik eml za pomocą Thunderbirda, kod zadziała, jeśli plik zostanie następnie załadowany za pomocą Live Mail). Możesz wysłać wiadomość e-mail z JavaScriptem za pomocą kodu PHP. Niektóre witryny e-mailowe mogą to obsługiwać, ale kilka, z których korzystałem, nie. (AOL, uk2.net, GMail)

Mark Antony Agius
źródło
0

Żaden klient poczty e-mail nie obsługuje javascript ze względów bezpieczeństwa

Spróbuj wysłać pocztę z tą zawartością HTML

     <!DOCTYPE html>
     <html>
     <body>
     <button onclick="this.innerHTML=Date()">The time is?</button>
     </body>
     </html>
sumit kushwah
źródło