Sendmail заменяет тег html [ДЛИННЫЕ строки в сообщениях электронной почты]

Я использовал sendmail, чтобы отправить электронное письмо ниже для получения. Как ни странно, один из тегов html был заменен после того, как я его получил. Таким образом, таблица выглядит нелепо.

Кто-нибудь знает, что происходит?

Используемая команда:

sendmail -t -f "test_mail@${HOSTNAME}" < /tmp/test_mail

Обновлять: Добавление новой строки в конец каждого тега html решило проблему, но почему ??

Содержимое / tmp / test_mail

to: [email protected]
subject: CRITICAL: xhhmy92856 (xhhmy92856)
mime-version: 1.0
Content-Type: text/html; charset = "UTF-8"

<style>
td, th {
  border: 1px solid #ccc;
  text-align: left;
  font-family: calibri;
}
th {
  text-align: center;
  background: gray;
  border-color: white;
  font-family: calibri;
  color: white;
}
p { font-family: calibri; }
</style>
<p>Environment statistics results, Date Fri Oct 12 13:10:22 AEDT 2018:</p>
<p>The following <b><font color=red>CRITICAL</font></b> issues were found on the environment statistics results:</p>
<table>
<tr><th>Group</th><th>Critical Status</th></tr>
<tr><td> (DB_5M_tables_row_count_check)</td><td>Library <b></b><br>Table <b>CIS_IPNE_CPU_5M</b><br>Less <b>IP_NEs</b> reported for some states in the last hour: <table><tr><th>Date Time</th><th>State</th><th>Previous</th><th>Current</th><th>Missing NEs</th></tr><tr><td>20181012.0745</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0750</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0755</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0800</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0805</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0810</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0815</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0820</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0825</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0830</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0835</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0840</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr></table><br><b>Action:</b>TEOCO, please check the GD Access Logs for further information. Identify first the NE, then the GD and just then look for timeouts or errors. (This check will be automatic soon)</b></td></tr>
</table>
<br><p>All checks are done.</p>

Полученный контент:

<meta http-equiv = "Content-Type" content = "text/html; charset=utf-8"><style>
td, th {
  border: 1px solid #ccc;
  text-align: left;
  font-family: calibri;
}
th {
  text-align: center;
  background: gray;
  border-color: white;
  font-family: calibri;
  color: white;
}
p { font-family: calibri; }
</style>
<p>Environment statistics results, Date Fri Oct 12 13:10:22 AEDT 2018:</p>
<p>The following <b><font color = "red">CRITICAL</font></b> issues were found on the environment statistics results:</p>
<table>
<tr><th>Group</th><th>Critical Status</th></tr>
<tr><td> (DB_5M_tables_row_count_check)</td><td>Library <b></b><br>Table <b>CIS_IPNE_CPU_5M</b><br>Less <b>IP_NEs</b> reported for some states in the last hour: <table><tr><th>Date Time</th><th>State</th><th>Previous</th><th>Current</th><th>Missing NEs</th></tr><tr><td>20181012.0745</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0750</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0755</td><td>NT</td><td>10</td>
 <td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0800</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0805</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.
 0810</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0815</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0820</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></ta></td></tr><tr><td>20181012.0825</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0830</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0835</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3
 </td><td>TimeOut.</td></tr></table></td></tr><tr><td>20181012.0840</td><td>NT</td><td>10</td><td>8</td><td><table><tr><th>NE</th><th>Access ID</th><th>GD Name</th><th>Error Text</th></tr><tr><td>RENUIC0001</td><td>1214</td><td>GD_SNMP_COMMNAD_19_MED3</td><td>TimeOut.</td></tr><tr><td>RENUIC0002</td><td>1249</td><td>GD_SNMP_COMMAND_13_MED3</td><td>TimeOut.</td></tr></table></td></tr></table><br><b>Action:</b>TEOCO, please check the GD Access Logs for further information. Identify first the NE, then the GD and just then look for timeouts or errors. (This check will be automatic soon)</b></td></tr>
</table>
<br><p>All checks are done.</p>

Обновлять: Добавление новой строки в конец каждого тега html решило проблему, но почему ???????

sed 's/table>/table>\n/g; s/tr>/tr>\n/g; s#</td>#</td>\n#g; s#</th># </th>\n#g' /tmp/test_mail

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

rlemon 12.10.2018 05:02

Спасибо, rlemon, я исправил последний </b>, но проблема все еще существует.

user3893836 12.10.2018 05:38

Сделайте валидный, правильно сформированный html, тогда он будет работать., В т.ч. html, теги head и body.

Poul Bak 12.10.2018 13:22
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
3
55
1

Ответы 1

ДЛИННЫЕ строки в сообщениях электронной почты (SMTP RFC821 / RFC5321)

Диагностировать:

Sendmail (от sendmail.org) разбивает длинные строки в сообщениях электронной почты. Другие серверы MTA / SMTP могут вести себя аналогичным образом. Ограничение Sendmail составляет 990 байт на строку.

В вашем случае самая длинная строка размером 4560 байтов была разбита на строки 991, 991, 1977, 604 байта.

Рекомендуемые исправления:

Не используйте строки длинный в вашем шаблоне html ИЛИ
Передача сгенерированного HTML через tidy (программа форматирования HTML)
ИЛИ
кодировать тело сообщения как пригодное для печати в кавычках (обрабатывает слишком длинные строки)
Это потребует дополнительных заголовков Кодировка с кавычками также удобна для кодировок почти ASCII (обычно ASCII / американский английский плюс несколько дополнительных / специальных букв)

RFC5321 4.5.3.1.6 Текстовая строка

4.5.3.1.6. Text Line

The maximum total length of a text line including the <CRLF> is 1000 octets (not counting the leading dot duplicated for transparency). This number may be increased by the use of SMTP Service Extensions.

Спасибо AnFi, однако даже строки были сломаны, но почему только один из </table> был заменен на </ta>, а не другие. Настройка сервера?

user3893836 14.10.2018 00:07

Я могу предлагать только слишком дикие догадки. Размещение заголовков Received: может помочь маленький. Он должен показать, какие типы серверов MTA / SMTP + LMTP / IMAP / POP обрабатывают сообщение.

AnFi 14.10.2018 07:57

Другие вопросы по теме