Как я могу конвертировать электронные письма HTML в обычный текст с fetchmail?

1483
Nik Reiman

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

Во-первых, адрес электронной почты отправителя выглядит ужасно искаженным, например: «Имя =? ISO-8859-1? B? TGp1bmdzdHL2bQ ==? =" ». Тело письма - это вложение в формате HTML, разумеется, с ненужным количеством дополнительного кода. Вложения особенно раздражают, так как они отображаются в виде вложений заявки в трекере ошибок, а тело заявки пусто.

Я немного погуглил, но нашел только решения, предлагающие огромные уродливые скрипты на awk или perl, которые не кажутся ни обслуживаемыми, ни достаточно надежными, чтобы учесть все возможные крайние случаи для внешнего вида HTML.

Что является лучшим решением здесь?

Нашей целевой платформой является Windows Server, и я бы предпочел что-то на Python, но у нас есть установка Cygwin, и поэтому мы можем использовать другие утилиты Unix, если это будет необходимо.

3

2 ответа на вопрос

6
Ludwig Weinzierl

Если вы исследуете свой вопрос, имея fetchmailв виду, вы не найдете хороших ответов. Это потому, что fetchmailэто не инструмент для вашей работы.

Как часто задаваемые вопросы Fetchmail говорят:

Повторяйте за мной: работа fetchmail - это транспорт, а не политика.

То, что большинство людей делают в таких случаях, это использовать fetchmailвместе с procmail. Проще всего было бы передать вам сообщения, html2txtкак описано здесь .

Если вы никогда не работали с procmail, не бойтесь. procmailэто ужасно, но если вы сохраняете вещи простыми, это не так уж плохо.

3
grawity

fetchmail только для извлечения почты, как и ее название.

В системах Unix большинство людей используют procmailдля обработки электронной почты. Вы можете написать рецепт, который проверяет /<html/iи передает сообщение w3m -dump( lynx -dumpили что угодно). Я не уверен, что подобное существует для Windows, хотя ...

(Я также сделал бы procmailответ с учебником по отключению HTML.)