cfmail отклоняет операторы стиля

Некоторое время у меня был код, который выглядит так:

<cfmail
          from     = "#session.user#"  
          to       = "#PersonEmail1#"          
          password = "#session.password#"
          username = "#session.user#"       
          server   = "localhost"                            
          replyto  = "#session.user#"
          subject  = "#txt['repsubject']#"               
          type     = "html"   >   
 <html>
 <head>
 <style>
     .repbordtop {
      border-top:5px double #A56ABD;
      color: #630D85;
      padding-top: 2px;
   }

</style>
</head>
</html>
   stuff
</cfmail>

Я запускал его как в Lucee, так и в ColdFusion 10, и он работал. Иногда отформатированные «вещи» даже проходили в отформатированном виде.

Теперь внезапно он выдает ошибки как в Lucee, так и в ColdFusion. В частности, он отказывается распознавать заявление о стиле. В Люси я получаю

отсутствует завершение [#] для выражения Stacktrace Ошибка произошла в /opt/lucee/tomcat/webapps/ROOT/reports/frag3.cfm: строка 25

23:
24: .repbordtop {
25: border-top:5px double #A56ABD;
26: color: #630D85;
27: padding-top: 2px;

тогда как в ColdFusion я получаю:

Недопустимая конструкция CFML обнаружена в строке 25 в столбце 35. ColdFusion просматривал следующий текст:

;

Компилятор CFML обрабатывал:

An expression that began on line 25, column 28.
The expression might be missing an ending #, for example, #expr instead of #expr#.
The body of a cfmail tag beginning on line 9, column 3.

Произошла ошибка в /home/moxwareo/public_html/reports/frag3.cfm: строка 25.

23 : 
24 :    .repbordtop {
25 :      border-top:5px double #A56ABD;
26 :      color: #630D85;
27 :      padding-top: 2px;

Таким образом, он задыхается в одной и той же строке, и явно тег стиля не распознается.

Код, который я показал выше, — это то, что я использовал для проверки проблемы. Я проверил свой код в реальной программе по сравнению с тем, что я использовал, когда он работал, и нет никакой разницы.

Кто-нибудь знает, почему тег стиля внезапно не распознается?


person Betty Mock    schedule 21.08.2019    source источник
comment
Вы пытались избежать знаков # в CSS? Если он находится внутри тега cf, я думаю, вы должны это сделать.   -  person TRose    schedule 22.08.2019
comment
Что было изменено?   -  person SOS    schedule 22.08.2019
comment
TRose, я пробовал как с дополнительным #, так и без него - разницы нет.   -  person Betty Mock    schedule 22.08.2019
comment
Ageax, изменения, которые я внес, касались области, которую я назвал материалом. Но программа, которую я написал выше, — это та, которую я использовал для тестирования (без строки stuff). Трудно представить, что изменение ниже конечного тега стиля будет иметь какое-либо значение.   -  person Betty Mock    schedule 22.08.2019
comment
Вы пробовали это с двумя #.s. Также попробуйте использовать именованные цвета, чтобы увидеть, работает ли это.   -  person James A Mohler    schedule 22.08.2019
comment
@BettyMock Вы также можете обернуть все это в блок try/catch, если вы еще этого не сделали. Вы можете получить более подробное сообщение об ошибке, если считаете, что # проблема не в этом.   -  person TRose    schedule 22.08.2019
comment
Ну, я переустановил старую версию, которая работала, и она все еще работает. Поэтому я сделал исправления, необходимые в новой версии, и она все еще работает. Это останется загадкой. TRose, идея с попыткой/поймой хороша, и я воспользуюсь ей, когда подобное произойдет снова.   -  person Betty Mock    schedule 22.08.2019


Ответы (1)


Тело cfmail обрабатывается точно так же, как и в cfoutput. Решетчатые метки рассматриваются как начало переменной/выражения для интерпретации и вывода. Чтобы избежать #, вам нужно удвоить его ##.

person Dan Roberts    schedule 21.08.2019
comment
Я использовал двойной ##. Это не избавляет от ошибки. ## будет использоваться, если у вас есть оператор style = внутри тега, такого как ‹p или ‹td. Однако внутри тега ‹style› это похоже на создание таблицы стилей, и второй символ # не нужен — он действительно мешает. - person Betty Mock; 22.08.2019
comment
внутри тега ‹style› ... второй # не нужен ... Э-э, если тег ‹style› заключен в cfoutput или любой другой подобный тег, это очень необходимо. - person TRose; 22.08.2019
comment
@BettyMock, чтобы быть предельно ясным ... все, что вы делаете, это создаете большую строку. CF и тег cfmail не имеют понятия тегов стиля. Они просто компилируют строку, которая становится содержимым сообщения. - person Dan Roberts; 22.08.2019
comment
Дэн, это не объясняет, почему я получаю сообщение об ошибке. - person Betty Mock; 22.08.2019
comment
Юмор нас. Удвойте все знаки # в CSS. Заверните его в cftry и cfcatch и выбросьте cfcatch. Если вы получите такое же сообщение об ошибке, я буду шокирован. - person TRose; 22.08.2019
comment
TRose, поскольку я решил проблему, вернувшись к более ранней версии, я пока пропущу попытку/поймать. Но мне нравится идея использовать его для отслеживания других неясных ошибок. Если бы я все еще застрял, я бы определенно повеселил вас. - person Betty Mock; 22.08.2019