web-dev-qa-db-ja.com

電子メールクライアントを構築するのはどれくらい難しいですか? -Python

私はここで未知の領域に冒険しています...

私はPythonを使用してEメールクライアントを実装することがどれほど難しいかを解明しようとしています:

  • メール検索
  • メール送信
  • メールのフォーマット
  • メールのレンダリング

また、すべてのプロトコルをサポートするのが簡単/難しいかどうか疑問に思っています。 SMTP、IMAP、POP3、.。


うまくいけば、誰かが私を正しい方向に向けることができます:)

18
RadiantHex

Python言語は、標準ライブラリで必要なプロトコルの生のサポートを提供します。thenを適切に使用し、「現代の」電子メールメッセージを適切に解析およびアセンブルしますが、行う。

また、電子メールクライアント用のグラフィカルインターフェイスを作成するかどうか(適切なグラフィカルインターフェイスを作成する場合)は、使用できるようになるまでは、かなりの作業が必要です。

ローカルの電子メールストレージはより簡単な部分です-mboxファイル形式を適切に実装したい場合を除いて RFC-4155 他のソフトウェアがフェッチしたメッセージを簡単に読み書きできるように、それらを保存できますin as Python ORMを使用するオブジェクト、またはZODBやMongoDBなどのオブジェクト指向データベース。

おもちゃの電子メールアプリ以上のものが必要な場合は、多くの作業が必要になります。たとえば、サーバー認証、安全な認証およびトランスポートレイヤーなど、電子メールヘッダーを適切にエンコードし、電子メールのテキスト本文自体をデコードします。 ASCIIメッセージ。Python標準ライブラリのモジュールはその多くを実装していますが、それらのドキュメントは例に欠けています-そして完全な電子メールクライアントその時のすべてを使用する必要があります。

確かに、電子メールクライアントを開始する場所は、おもちゃのクライアントであっても、電子メールの最新のRFCを調べることになるでしょう(そして、ここから選択する必要があります http:// www。 ietf.org/rfc/rfc-index googleで「emailrfc」を検索するだけでは結果が良くないため)。

26
jsbueno

クライアントの重要なパーツの多くがあらかじめパッケージ化されていることがわかると思います。

電子メールの取得-それは多くのPythonライブラリでカバーされていると思います。

電子メールの送信-これは難しいことではなく、おそらく同様にカバーされています。

電子メールのフォーマット-クライアントのシングルパートおよびマルチパートの電子メールを解析するために使用しただけなので、これがカバーされていることはわかっています。

電子メールのレンダリング-ある種のHTMLレンダラーを狙って撮影します。 MozillaプロジェクトからレンダラーへのPythonインターフェースがあります。pythonインターフェースを持つ他のレンダリングエンジンもあると思います。wxWidgetsにはいくつかの単純なHTML機能であり、はるかに軽量です。考えてみると、Mozillaエンジンには、必要な他の機能もたくさんある可能性があります。各部分を調査する必要があります。

上にリストされているものよりも多くのものがあります。それが一日で構築されない間、価値があるもののように。私はあなたがそれをしたいことを正確にレイアウトします。次に、プロトタイプの作成を開始します。基本的なことを行う単純なフレームワークを構築するだけです。 HTMLのないメッセージのテキスト部分のみをサポートするように。次に、その上に構築します。

Pythonで利用できるコーディングモジュールの豊富さに驚いています。 HTMLメールメッセージのフィルタリング、スタイルシートの解析、スタイルの埋め込み、その他のホスト全体をフィルタリングする必要がありました。 Pythonライブラリのどこかに必要なほぼすべての関数が見つかりました。そのためのモジュールがあることをいくつかのcssシートがgzipで圧縮されていることを知ったとき、私は特に嬉しかったです!

それで、あなたが真剣にそれから掘り下げるならば。あなたはたくさんを学ぶでしょう。 :)

5
Demolishun

あなたを落胆させるためではありませんが、なぜあなたは電子メールクライアントを作りたいのですか?

多くのの電子メールクライアントがすでに存在し、クライアントが望むほとんどすべてのものに対応します。フルフレックスクライアント、軽量クライアント、コマンドライン、ウェブメール、それはすべてすでに存在しています。

ユーザーに独自の機能を提供したいと思うかもしれませんが、たとえばThunderbird用のプラグインを作成する方がよいと思います。または、クライアント自体に本当に興味がある場合は、既存のプロジェクトに貢献してみてください。


しかし、トピックでは、クライアントフロントエンドの作成はGUIの作成と同じくらい難しいですが、Pythonでは多くのが組み込まれているため、メールの内部は非常に簡単です。 IMAP、SMTP、POP3などのライブラリ。

3
orlp

クライアントを構築するレベルによって異なります。 conection/dataを処理するために smtplib のようなライブラリを使って何かをすばやく作成できます。そして tk GUIの場合。しかし、繰り返しますが、それはすべてあなたの後の仕上げのレベルに依存します。

あなた自身のための簡単な基本的なツール:簡単。 (図書館あり)
完全な機能を備えた電子メールクライアントの作成:難しい。

ライブラリを使用する代わりに、貢献できるオープンソースプロジェクトを見つけることもできます。 Mailpile をご覧になることをお勧めします

1
Bruno

もし私があなたなら、既存の電子メールクライアントのソースコードをチェックしてアイデアを得るでしょう:Thunderbird、sylpheed-claws、mutt ...

サポートしたい機能のセットに応じて、それは大きなプロジェクトです。

1
static_rtti