Назад | Перейти на главную страницу

Отправить простое электронное письмо в формате HTML из командной строки?

У меня есть задание cron, которое создает список ресурсов, дату истечения срока действия и дни до истечения срока действия. Отчет создает файл CSV. Я прикрепляю это к сообщению, используя mutt -a report.csv.

Я также хочу включить информацию в тело письма. Я использую gawk, чтобы отформатировать это в чистые строки и добавить в тело. Это выглядит примерно так:

Resource                                 Expiration Date           Days  
======================================== ========================= ========

resource one                             Oct 11 2009 07:59 PM      3    
resource two                             Nov  3 2009 07:59 PM      22     
resource three has a longer name         Nov  6 2009 07:59 PM      28     
rscrc 4                                  Dec  8 2009 07:59 PM      58     
you get the point                        Dec 17 2009 07:59 PM      66     
www.blockbuster1.smartsubs.net           Dec 23 2009 07:59 PM      70     

(да, я ошибся с датами и сроком действия, в этом примере они не складываются)

Проблема в том, что у большинства получателей почтовые клиенты не настроены для отображения обычного текста электронной почты с использованием шрифта фиксированной ширины. Итак, для них это выглядит так:

Срок действия ресурса Дни
======================================== ========== =============== ========

ресурс один 11 октября 2009 19:59 3
ресурс два 3 ноября 2009 19:59 22
у ресурса три более длинное имя 6 ноября 2009 г., 19:59 28
rscrc 4 8 декабря 2009 19:59 58
вы поняли 17 декабря 2009 19:59 66
www.blockbuster1.smartsubs.net 23 декабря 2009 19:59 70

Есть ли предложения о том, как легко отформатировать этот текст в электронном письме, чтобы использовать шрифт фиксированной ширины? У меня есть возможность установить новые инструменты командной строки на этом сервере

Если у вас достаточно последняя версия mutt, я думаю, вы можете сделать что-то подобное.

mutt -e 'set content_type="text/html"' -a file.csv user@example.org -s "subject" < index.html

index.html будет HTML-текстом вашего сообщения.

Я бы сказал, просто создайте таблицу html, используя операторы печати, хакерские, но работает, я делал это раньше.

Менее хакерским было бы использовать преобразователи таблиц csv в html. Вот один с awk. Затем вы можете просто отправить как html, так и простой текст, и их читатель должен использовать. Вам нужно будет узнать, как это сделать с любой почтовой библиотекой / программой, которую вы используете.

В любом случае, я бы пошел с таблицами, пытаясь принудительно установить шрифт ширины исправления. Я думаю, что таблица была бы более последовательной (хотя у меня нет никаких реальных доказательств этого).

Не могли бы вы обернуть все это элементом p и встроенным стилем, установленным для моноширинного шрифта и предварительно отформатированного интервала?