Як отримати HTML з електронної пошти з Linux?


0

Я використовую машину Linux (Debian) і встановлюю на ній fetchmail і procmail. Зараз він здатний отримувати повідомлення, надіслані на мою адресу Gmail кожну хвилину. Проте файл, отриманий за допомогою fetchmail, не є звичайним HTML-файлом, але містить символи, що друкуються за допомогою цитат.

Моя мета полягає в тому, щоб мати можливість отримати вихідний код HTML електронної пошти, так само, як я б міг зробити, якщо я відкрию Outlook у Windows, клацніть правою кнопкою миші на пошті і виберіть "Показати вихідний код".

Також важливо, щоб це було можливо зробити програмно, оскільки я хочу автоматизувати завдання.

Редагувати: У моєму початковому питанні не вистачає точності, тому тут наведено більше інформації про мою проблему. Один з моїх клієнтів надсилає мені поштову електронну пошту щодня, що містить таблицю з даними про продаж попереднього робочого дня. Зараз, кожен день, я повинен скопіювати дані з електронного листа в файл EXCEL. Однак, оскільки це дуже повторюване завдання, я хочу мати рішення, яке може зробити це для мене автоматично. Я знаю, як записати дані в файл EXCEL з Python, і я маю деяку уяву, як отримати інформацію з HTML-документа з деякими бібліотеками Python.

Тому я вирішив використовувати crontab з Linux, fetchmail і procmail, щоб зробити наступне: кожну хвилину я перевіряю свій поштовий ящик, якщо отримав листа від мого клієнта. Якщо це так, я запускаю скрипт python на цьому файлі, щоб отримати інформацію. Після цього я вводжу цю інформацію до файлу EXCEL і надсилаю її собі.

Сценарій прекрасно працює на моєму ПК з вихідним кодом HTML електронної пошти, яку я отримав від Outlook. Однак на моїй машині Linux вона не працює. Я відкрив вихідний код файлу електронної пошти з моєї машини Linux і з'ясував, що частина HTML-коду була змінена.


1
Якщо Gmail не робить щось смішне, файл, який ви отримали через fetchmail має бути у форматі MIME для багатоабонентських повідомлень (що він містить "символи, що містять цитований текст"). Багато листів клієнтів надсилати електронну пошту як в текстовому, так і в HTML, як різні частини MIME, але немає жодної гарантії, що пошта, адресована вам, містить HTML взагалі (якщо, наприклад, gmail не додає його, якщо вона відсутня). Можна використовувати metamail для вилучення різних частин, включаючи HTML.
dirkt

Команда Outlook "Показати вихідний код" виконує деякі дуже дурні речі; ви цього не хочете.
tripleee

Відповіді:


0

Ви, здається, маєте деякі недійсні припущення. Електронна пошта не обов'язково має єдину частину тіла, і вона може бути не в HTML.

Без додаткової інформації про те, чого ви дійсно хочете, це буде дуже спекулятивним; але щось подібне

:0B:
* Content-type: text/html
* Content-transfer-encoding: quoted-printable
| quoted-printable --decode >>extracted.html

буде декодувати QP і додати до зростаючого файлу корисних навантажень HTML (якщо ви маєте назву команди quoted-printable з опцією --decode для декодування QP).

Це, мабуть, не є корисним, оскільки більшість HTML-навантажень містяться в контейнерах MIME. Вищевказане передбачає, що повідомлення має єдину корисну навантаження верхнього рівня, яка є text/html і кодуються з цитуванням для друку, і це просто не-оп, якщо це не так.

Procmail не особливо добре підходить для обходу структур MIME, але щось подібне має легко писати, наприклад, Python і стандарт email бібліотека. Є також такі автономні інструменти ripmime які дозволяють витягувати вибрані корисні навантаження з повідомлення MIME.


0

Велике спасибі всім за відповіді.

Хоча я знайшов своє власне рішення, я думаю, що в майбутньому слід розглянути можливість використання деяких рішень, які ви згадали.

Я нарешті знайшов рішення того, що шукав. Проблема, яку я мав, коли відкриваю файл електронної пошти, отриманий з fetchmail, він має багато спеціальних знаків, які були додані. Таким чином, він не виглядав добре в браузері і мав знаки "=" в місцях, де його не було.

Тому для того, щоб вирішити цю проблему, я побачив, що коли я відкриваю файл з Python, він має символи "=" і "n" в кінці кожного рядка. "наприкінці рядків файл виглядав добре, коли я знову відкрив його за допомогою веб-браузера.


Python має вбудовану функцію для декодування з цитуванням для друку. На додаток до складки рядка ви згадуєте, ви також повинні декодувати послідовності, як =3D в кожному рядку.
tripleee
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.