Подтвердить что ты не робот

Насколько сложно создать почтовый клиент? - Python

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

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

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

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


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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

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

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

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

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

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

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

Ответ 3

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

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

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


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

Ответ 4

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

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

Ответ 5

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

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

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