sendmail заменяет HTML-тег [длинные строки в сообщениях электронной почты] - PullRequest
0 голосов
/ 12 октября 2018

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

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

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

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

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

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

to: xxx.xxx@outlook.com
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

1 Ответ

0 голосов
/ 12 октября 2018

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

Диагностика:

Sendmail (by 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.Текстовая строка

Максимальная общая длина текстовой строки, включая <CRLF>, составляет 1000 октетов (не считая начальную точку, дублированную для прозрачности).Это число может быть увеличено за счет использования SMTP-сервисных расширений.

...