У меня есть отправленное электронное письмо, в котором выводится текст ответов об ошибках HTTP. Если ответ когда-либо включает код Javascript в тегах <script> (и некоторый HTML-код), то Gmail (и многие другие почтовые клиенты) удаляют код.
Кроме того, если есть что-то после </script>, это, похоже, тоже удаляется.
Как я могу сделать так, чтобы код Javascript не удалялся, а просто включался в виде обычного текста в тело электронного письма в формате HTML?
поэтому закодируйте его как обычный текст
Доступны теги <pre> и <code>
<\script> должно быть </script>. Вот почему все, что после того, как оно было удалено, вы не завершили сценарий должным образом.
Почему вы вообще пытаетесь отправить почту в формате HTML с помощью JavaScript? Я не думаю, что какие-либо почтовые клиенты будут его выполнять.
Ответы об ошибках HTTP никогда не должны содержать теги HTML. Вы должны просто закодировать все - в PHP используйте htmlentities().
Таплар на правильном пути, но это еще не все. Не уверен, сколько еще. В stackoverflow.com/questions/7381974/… есть несколько ответов, но я не читал их полностью. Я предполагаю, что вы должны сбежать из < в <, из > в > и из & в &. (Но сначала избегайте &, иначе он будет идти < -> < -> &lt;, что будет отображаться как <.) Я думаю, что вы можете спокойно игнорировать, где в этой ссылке упоминаются контексты, такие как теги скрипта — их не будет. <script> теги, потому что не останется < символов.
@Taplar Это сработало, спасибо.
@Barmar Это для ответа, который я получаю от внешнего API, который я не могу контролировать. Обычно я получаю только текстовые ответы от API, но в последнее время я получаю ответы, которые начинаются с кода Javascript. Кроме того, я не пытался выполнить код, я просто хотел посмотреть, что это такое, и единственный способ узнать об этом — по электронной почте. Оказывается, это было связано с программным обеспечением New Relic Browser на сервере API.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я думаю, вы можете использовать объекты HTML
<script>code</script>
или
<script>code</script>
должен стать
<script>code</script>
при рендеринге
Вы можете использовать этот инструмент
Вы можете попробовать заменить все
<на<