未知の領域に挑んでいます...
Python を使用して電子メール クライアントを実装するのがどれほど難しいかを調べようとしています。
- メールの取得
- メール送信
- メールのフォーマット
- メールのレンダリング
また、SMTP、IMAP、POP3 など、すべてのプロトコルのサポートが簡単かどうかも疑問です。
うまくいけば、誰かが私を正しい方向に向けることができます:)
未知の領域に挑んでいます...
Python を使用して電子メール クライアントを実装するのがどれほど難しいかを調べようとしています。
また、SMTP、IMAP、POP3 など、すべてのプロトコルのサポートが簡単かどうかも疑問です。
うまくいけば、誰かが私を正しい方向に向けることができます:)
Python 言語は、標準ライブラリで必要なプロトコルの生のサポートを提供します。しかし、それを適切に使用し、「現代の」電子メール メッセージを適切に解析して組み立てるのは難しい場合があります。
また、電子メール クライアント用のグラフィカル インターフェイスを作成するかどうかについてもおっしゃっていませんでした。適切なグラフィカル インターフェイスが必要な場合は、使用できるようになるまで、かなりの作業が必要です。
ローカルの電子メール ストレージの方が簡単です。mbox ファイル フォーマットRFC-4155を適切に実装して、フェッチしたメッセージを他のソフトウェアが簡単に読み書きできるようにする場合を除き、ORM を使用して Python オブジェクトとして保存できます。または、ZODB や MongoDB などのオブジェクト指向データベース。
おもちゃの電子メール アプリ以上のものが必要な場合は、多くの作業が必要になります。たとえば、サーバー認証、安全な認証およびトランスポート レイヤーなどの電子メール ヘッダーを適切にエンコードし、電子メール テキスト本文自体を非暗号化のためにデコードします。 ASCII メッセージ。Python 標準ライブラリのモジュールはその多くを実装していますが、それらのドキュメントには例が不足しており、完全な電子メール クライアントはそのすべてを使用する必要があります。
確かに、おもちゃのクライアントであっても、電子メール クライアントを開始する場所は、電子メールの最新の RFC を調べることです (そして、ここから選択する必要がありますhttp://www.ietf.org/ rfc/rfc-indexは、Google で「email rfc」を検索するだけでは結果が悪いためです)。
クライアントの重要な部品の多くが事前にパッケージ化されていることがわかると思います。
メールの取得 - 多くの Python ライブラリでカバーされていると思います。
電子メールの送信 - これは難しいことではなく、おそらくカバーされています。
電子メールの書式設定 - クライアントの単一および複数の電子メールを解析するために使用したため、これがカバーされていることはわかっています。
電子メールのレンダリング - 何らかの HTML レンダラーを使用します。Mozilla プロジェクトからのレンダラーへの Python インターフェイスがあります。Python インターフェイスを持つ他のレンダリング エンジンもあると思います。wxWidgets にはいくつかの単純な HTML 機能があり、大幅に軽量になることはわかっています。考えてみれば、Mozilla エンジンには他にも必要な機能がたくさんあるかもしれません。各パーツを研究する必要があります。
上記以外にもたくさんあります。価値のあるものと同じように、一日にして成らず。あなたがやりたいことを正確にレイアウトします。次に、プロトタイプの組み立てを開始します。基本的なことを行う単純なフレームワークを構築するだけです。HTMLなしでメッセージのテキスト部分のみをサポートするように。次に、その上に構築します。
Python で利用できる豊富なコーディング モジュールには驚かされます。HTML 電子メール メッセージのフィルタリング、スタイルシートの解析、スタイルの埋め込み、その他多数の処理を行う必要がありました。どこかの Python ライブラリで、必要なほぼすべての関数を見つけました。一部の css シートが gzip されていることを知り、そのためのモジュールがあることを知ったときは特に嬉しかったです!
ですから、真剣に考えているなら、掘り下げてください。多くのことを学ぶことができます。:)
もし私があなただったら、アイデアを得るために既存の電子メールクライアントのソースコードを調べます: Thunderbird、sylpheed-claws、mutt...
サポートしたい機能のセットにもよりますが、これは大きなプロジェクトです。