Блоки кода в письмах содержат пустые строки

Кодовые блоки отображаются с пустой новой строкой между каждой строкой ТОЛЬКО в HTML-части электронных писем. На самом форуме и в текстовой части письма они отображаются корректно. Это не проблема форматирования писем или CSS — в исходном коде добавляется реальная новая строка ТОЛЬКО в случае отправки письма.

Пример: [iFFT Freeze/Scrub - #25 by toneburst - Questions - scsynth]

Исходный текст сообщения выглядит так:

Отформатированное сообщение на сайте выглядит так:

Однако полученное HTML-письмо выглядит так:

В исходном коде письма видно, что все новые строки удвоены:

Согласен, это действительно выглядит довольно странно.

@techAPJ, не могли бы вы разобраться?

На последней версии Discourse мне не удалось воспроизвести эту проблему.

HTML:

Текст:

Возможно, проблема связана с вашим почтовым клиентом.

Я всё ещё вижу проблему с письмами, отправленными из версии 2.9.0.beta1 — пожалуйста, игнорируйте остальную часть этого сообщения, если проблема уже была исправлена с тех пор :slight_smile:

Это не связано с конкретным почтовым клиентом — на втором скриншоте, который я опубликовал, показан сгенерированный для писем сырой HTML. Но на самом деле более показательно посмотреть на фактическое содержимое письма (фрагмент…):

<pre style=3D"word-wrap: break-word; max-width: 694px;"><code style=3D"display: block; background-color: #f9f9f9; overflow: auto; padding: 5px;; background-color: #f9f9f9; padding: 2px 5px;">=0D
(=0D
// This expects two keys to be defined: ~history (the list) and ~recordKey (which key to record)=0D
Pdef(\keyRecorder, Pbind(=0D
	\callback, Pfunc({=0D
		|event|=0D
		event[\callback].addFunc({ // combine your record func with any previous callback that was there (it's okay if its nil)=0D
			~history.add(currentEnvironment[~recordKey])=0D
		}).postln;=0D
	})=0D
));=0D
=0D

Очевидно, что присутствуют (a) ФАКТИЧЕСКИЕ переносы строк там, где они должны быть в коде, и (b) символы =0D (возврат каретки) в конце каждой строки. Насколько мне известно, все переносы строк внутри тега <pre> должны интерпретироваться буквально, что объясняет двойные переносы строк.

Мне удалось воспроизвести проблему в Gmail, а также открыв HTML-часть письма напрямую в браузере (после замены символов с кодировкой quoted-printable, таких как =0D). Это заставляет меня задуматься:

  • Видите ли вы то же самое (переносы строк плюс =0D), когда смотрите на сырую версию отправленного вами письма?
  • Если да, то как выглядит исходный HTML для «правильного» отображения, которое вы опубликовали? Ваш почтовый клиент каким-то образом удаляет =0D (или переносы строк, если уж на то пошло)?

В любом случае, даже если это специфическая проблема Gmail, стоит хотя бы разобраться в этом, поскольку Gmail является самым распространённым почтовым клиентом.