Поддерживается ли JavaScript в сообщении электронной почты?

153

Поддерживается ли JavaScript в сообщении электронной почты?

Senthil
источник
39
Это не заслуживает -1
кикито
1
Целевая программа электронной почты - Outlook? Тандерберд? GMail? Hotmail? Все вышеперечисленное? Другие? Различные почтовые программы по-разному обрабатывают почту.
WonderWorker
1
Я только что увидел, что ребята из rockettheme делают обратный отсчет, так что дни, часы, минуты и секунды, и графика тоже анимированы ... удивительно, что возможно сейчас. Не знаю, как еще они могли это сделать. Наблюдается в почтовом клиенте Mac.
приземлился
2
Я нашел домен и получил это - motionmailapp.com
приземлился
3
@landed Я только что увидел то же самое в письме от WordPress. Оказывается, это просто динамически сгенерированный GIF, который начинает обратный отсчет с момента его получения (и он сбрасывается через 45 секунд - я думаю, если вы не щелкнули в течение 45 секунд, вы, вероятно, уже закрыли электронное письмо).
Лайонел Роу

Ответы:

49

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

Старые клиенты , такие как Lotus Notes, Mozilla Thunderbird, Outlook Express и Windows Live Mail, похоже, поддерживали выполнение некоторого вида JavaScript. Больше ничего не делает.

Это кажется плохой идеей с точки зрения безопасности, поэтому я ожидал, что это будет функция, которая не всегда будет присутствовать, даже в этих клиентах.

Мэтью Мартин
источник
9
«Lotus Notes, Mozilla Thunderbird, Outlook Express и Windows Live Mail, похоже, поддерживают какой-то вид выполнения JavaScript» - в сценариях шаблонов сообщений, а не в полученных электронных письмах.
Квентин
2
Вау, эти клиенты теперь настолько стары, что ссылки на то, как они себя вели раньше, вымирают, я не могу ни подтвердить, ни опровергнуть это. Шесть лет спустя я был бы удивлен, если бы все еще использовался один-единственный почтовый клиент, в котором специально разрешено выполнение какого-либо сценария.
MatthewMartin,
18

Нет, в большинстве случаев программы чтения электронной почты не поддерживают использование JavaScript.

jsight
источник
2
как насчет Gmail в браузере Chrome?
Nicolas S.Xu
1
@ NicolasS.Xu Gmail удаляет код JavaScript из сообщения, прежде чем передать его браузеру. Значит, JS не работает. Я тестировал Gmail в Firefox 56 и Chrome 61. Также проверял код в инструментах для веб-мастеров, код JS удален.
Кристофер К.
18

Другие респонденты предположили, что ответ - «Нет».

С другой стороны, вложение html, вероятно, откроется в среде, в которой работает Javascript.

РЕДАКТИРОВАТЬ: Было высказано предположение, что я не ответил должным образом на вопрос, поэтому здесь идет более полное усилие.

Резюме: я ожидаю, что многие или большинство пользователей, получающих электронное письмо в формате html, содержащее встроенный Javascript, увидят его запуск и проведут тесты, чтобы подтвердить, что это верно в некоторых средах. Но Javascript БУДЕТ заблокирован для некоторых пользователей.

Протоколы (в частности, RFC2854) явно обращаются к сценариям (в рамках типа тела сообщения text / html) с утверждением, что:

Кроме того, введение языков сценариев и интерактивных возможностей в HTML 4.0 привело к ряду рисков безопасности, связанных с автоматическим выполнением программ, написанных отправителем, но интерпретируемых получателем. Пользовательские агенты, выполняющие такие сценарии или программы, должны быть предельно осторожны, чтобы гарантировать, что ненадежное программное обеспечение выполняется в защищенной среде.

Итак, протоколы поддерживают Javascript, но какие пользовательские агенты поддерживают?

Моя (древняя) программа чтения электронной почты использует таблицу, чтобы указать, какую программу просмотра использовать для каждого типа mime, перенаправляя HTML-контент в мой любимый веб-браузер. Почти все современные веб-браузеры поддерживают Javascript (и некоторые из них выдают ужасные предупреждения, когда вы пытаетесь его выключить!). Включают ли современные почтовые агенты внутренние интерпретаторы html и, если да, включен ли JavaScript? Я проверил документацию по Thunderbird и обнаружил, что javascript, кажется, включен по умолчанию, но может быть отключен: http://codeverge.com/mozilla.support.thunderbird/simple-html-tags-reference-docume/2030160

Я заметил, что некоторые («многие») пользователи теперь получают доступ к своей электронной почте напрямую из браузера (веб-почта является одной из таких платформ), а не запускают отдельное почтовое программное обеспечение. Все такие платформы, которые я тестировал до сих пор, запускают любой Javascript, встроенный в html сообщения электронной почты. Однако некоторые из таких сред, в зависимости от настроек безопасности пользователя, не получают автоматически внешние ссылки (Javascript, изображения или другие) и поэтому могут запускать внешний Javascript только из файла, который включен в качестве вложения в сообщение. То же самое можно сказать о любом автономном устройстве для чтения электронной почты на устройстве без подключения к Интернету.

Вышесказанное относится к javascript, встроенному в основную часть сообщения электронной почты. Можно также иметь html, явно заданный как «вложение», которое, если его сохранить и затем открыть, будет отображаться в веб-браузере, где Javascript доступен с очень высокой вероятностью. Следовательно, можно было бы включить вторую копию электронного письма с поддержкой javascript в виде вложения html с альтернативным текстом / обычным основным телом и / или тегом в основном тексте / html, направляя пользователя к вложению.

Я думал об этом, потому что некоторые из моих знакомых настаивают на отправке мне "поздравительных открыток по электронной почте", которые состоят из текстового сообщения, перенаправляющего меня по ссылке, которую я нашел настолько неудовлетворительной, что я отказываюсь даже думать о ее загрузке просто из принципа . Я написал и отправил по электронной почте поздравительные открытки с интерактивной графикой и музыкой и даже с играми, использующими встроенный javascript, и остался доволен результатом.

Поэтому я утверждаю, что правильный ответ - «Да» как на том основании, что протоколы специально обращаются к сценариям, так и на том основании, что все почтовые агенты, которые я лично использую, запускали Javascript в моих тестовых письмах.

Роберт Морвуд
источник
2
Вы не даете конкретного списка клиентов, на которых вы успешно тестировали JS и с каким кодом JS. Я проверил Thunderbird 52.4.0 с настройкой «Исходный HTML», и он проигнорировал JS <script> document.write('test'); </script>в моих тестовых письмах. То же самое для Outlook для Android 2.2.44, K-9 для Android 5.208, Gmail webmailer (проверено 06.11.2017) и Roundcube webmailer 0.9.5. Так что я согласен с теми, кто говорит, что это не работает у большинства (современных) клиентов. Это правда, что большинство пользователей используют веб-почтовые программы, но по уважительной причине они, кажется, удаляют JS из сообщений, прежде чем передать их браузеру.
Christopher K.
1
Поскольку ваша ссылка на «документацию» Thunderbird вообще не является документацией, а относится к некоторому вопросу, заданному пользователем, я поискал официальную документацию и нашел это: developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Releases / 3 - Он говорит, что JS в электронных письмах был сброшен в Thunderbird 3.
Christopher K.
15

Короткий ответ

Нет


Описательный ответ

Это зависит. Но не гарантируется, что электронное письмо будет вести себя так, как вы хотите. Различные почтовые клиенты по-разному обрабатывают JS. Большинство новых почтовых клиентов не поддерживают ни одну из этих функций, поскольку потенциально очень опасно поддерживать выполнение сценария в настольном приложении, которое содержит так много вашей личной информации.

У меня был случай, когда мне нужно было использовать JS в электронной почте. Я также пробовал использовать веб-клиент Outlook и настольный клиент, и оказалось, что Outlook просто стирает часть сценария вашего электронного письма в формате HTML. Может быть какой-то другой почтовый клиент, который поддерживает выполнение JS, но, учитывая, что вы не можете управлять клиентом, на котором ваша электронная почта будет просматриваться на клиентском компьютере, не рекомендуется встраивать какие-либо сценарии в электронное письмо в формате HTML.

Рекомендуется, чтобы ваша электронная почта HTML была как можно более простой, без JS и минимальным количеством CSS, с которым вы можете использовать (потому что, опять же, разные почтовые клиенты также имеют разную поддержку CSS), например: веб-клиент Outlook даже не распознавал HTML тег кнопки в электронном письме. Мне пришлось использовать тег привязки и немного CSS поверх него, чтобы имитировать отображение кнопки.


Итог - не полагайтесь на Javascript при работе с содержимым электронной почты HTML.

Кетан Р
источник
4

Вы не собираетесь размещать исполняемый JavaScript на сервере и в почтовом клиенте. Но электронные письма ДЕЙСТВИТЕЛЬНО поддерживают ссылки, вы всегда можете ссылаться на свой контент в электронном письме.

Sam152
источник
3

Для большинства почтовых клиентов нет.

Мервин
источник
2

Может быть, но почтовые клиенты его не прочитают, а почтовые серверы могут его отклонить. Так что оставь это.

Эд Б
источник
0

В электронных письмах не поддерживается Javascript.

Нил Найт
источник
3
Это неправда. По крайней мере, Outlook и Outlook Express поддерживают Javascript, что является одной из многих причин их избегать (по соображениям безопасности).
PauliL
1
@PauliL: Это зависит от того, разрешено ли это в настройках зоны ограниченных сайтов.
Нил Найт,
0

Вы можете просматривать электронное письмо с помощью JavaScript, работающего с Windows Live Mail, но не можете добавить JavaScript в новое электронное письмо, которое хотите отправить. JavaScript также работает с сохраненными файлами .eml. Mozilla Thunderbird версии 60.7.0 не может просматривать или добавлять JavaScript. (Если вы сохраните файл eml с помощью Thunderbird, код будет работать, если файл затем будет загружен с помощью Live Mail). Вы можете отправить электронное письмо с помощью JavaScript, используя код PHP. Некоторые веб-сайты электронной почты могут его поддерживать, но некоторые из них - нет. (AOL, uk2.net, GMail)

Марк Энтони Агиус
источник
0

Почтовый клиент не поддерживает javascript из соображений безопасности

Попробуйте отправить почту с этим HTML-содержимым

     <!DOCTYPE html>
     <html>
     <body>
     <button onclick="this.innerHTML=Date()">The time is?</button>
     </body>
     </html>
Сумит Кушвах
источник