Насколько сложно построить почтовый клиент? - питон - PullRequest
16 голосов
/ 13 апреля 2011

Я здесь на неизвестной территории ...

Я пытаюсь понять, насколько сложно реализовать почтовый клиент с использованием Python:

  • Поиск электронной почты
  • Отправка электронной почты
  • Форматирование электронной почты
  • Отображение электронной почты

Также мне интересно, все ли протоколы легко / сложно поддерживать, например, SMTP,IMAP, POP3, ...


Надеюсь, кто-то может указать мне правильное направление:)

Ответы [ 5 ]

26 голосов
/ 13 апреля 2011

Язык Python предлагает необработанную поддержку необходимых протоколов в своей стандартной библиотеке.Однако правильное использование и, соответственно, разбор и сбор «современных» сообщений электронной почты могут быть сложными.

Кроме того, вы не сказали, хотите ли вы создать графический интерфейс для своего почтового клиента - если вы хотите иметь надлежащий графический интерфейс - вплоть до возможности его использования, этодовольно много работы.

Локальное хранение электронной почты будет проще - если вы не хотите правильно реализовать формат файла mbox RFC-4155 , чтобы другие программы могли легко читать / записывать сообщения, которые вы получилиВы можете хранить их как объекты Python, используя ORM или объектно-ориентированную базу данных, например ZODB или MongoDB.

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

Конечно, место для запуска электронной почтыпочтовый клиент, даже игрушечный, будет проверять самые последние RFC для электронной почты (и вам нужно будет выбрать отсюда http://www.ietf.org/rfc/rfc-index, так как просто поиск «email rfc» в Google даетплохой результат).

5 голосов
/ 29 июля 2011

Я думаю, вы найдете большую часть важных компонентов клиента в заранее подготовленном виде:

Поиск по электронной почте - я думаю, что это охватывается многими библиотеками Python.

Отправка электронной почты - это не будетсложно, и это, скорее всего, также покрыто.

Форматирование электронной почты - я знаю, что это покрыто, потому что я просто использовал его для анализа отдельных и составных электронных писем для клиента.

Отображение электронной почты - я быстрелять для рендера HTML какой-то.Существует интерфейс Python для рендеринга из проекта Mozilla.Я предполагаю, что есть и другие движки рендеринга, которые также имеют интерфейсы Python.Я знаю, что wxWidgets имеет несколько простых средств HTML и будет намного легче.Если подумать, у движка Mozilla может быть множество других функций, которые вам могут понадобиться.Вам придется исследовать каждую из частей.

Это намного больше, чем то, что перечислено выше.Как что-нибудь стоящее, пока оно не будет построено за день.Я бы выложил именно то, что вы от этого хотите.Тогда начните собирать прототип.Просто создайте простую структуру, которая делает основные вещи.Как только он поддерживает текстовую часть сообщения без HTML.Затем опирайтесь на это.

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

Так что, если вы серьезно относитесь к этому, тогда покопайтесь. Вы узнаете много.:)

3 голосов
/ 13 апреля 2011

Не для того, чтобы вас обескуражить, но почему вы хотите создать почтовый клиент?

A много почтовых клиентов уже существует, почти для всего, что хочет клиент. Полностью согнутый клиент, облегченный клиент, командная строка, веб-почта - все это уже существует.

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


Но по сути, написание клиентского интерфейса так же сложно, как и написание любого графического интерфейса, но внутренняя часть почты довольно проста в Python, потому что она имеет множество встроенных библиотек для такие вещи, как IMAP, SMTP, POP3.

1 голос
/ 12 декабря 2016

Зависит от того, на каком уровне вы хотите построить клиент.Вы можете быстро набросать что-нибудь с помощью библиотек, таких как smtplib для обработки соединений / данных.И тк для графического интерфейса.Но, опять же, все зависит от уровня финиша после.

Быстрый базовый инструмент для себя: Легко.(С библиотеками)
Написание полноценного почтового клиента: сложный.

Вместо использования библиотеки вы также можете найти проект с открытым исходным кодом, в который вы можете внести свой вклад.Я бы порекомендовал взглянуть на Почтовый ящик

1 голос
/ 13 апреля 2011

На вашем месте я бы проверил исходный код существующих почтовых клиентов, чтобы понять: thunderbird, sylpheed-claws, mutt ...

В зависимости от набора функций, которые вы хотите поддерживать, это большой проект.

...