このモジュールは、 POP3 クラスを定義します。これはPOP3サーバへの接続と、 RFC 1725 に定められたプロトコルを実装します。 POP3 クラスは minimalとoptinalという2つのコマンドセットをサポートします。モジュールは POP3_SSL クラスも提供します。このクラスは下位のプロトコルレイヤーにSSLを使ったPOP3サーバへの接続を提供します。
POP3についての注意事項は、それが広くサポートされているにもかかわらず、既に時代遅れだということです。幾つも実装されているPOP3サーバーの品質は、貧弱なものが多数を占めています。もし、お使いのメールサーバーがIMAPをサポートしているなら、 imaplib や IMAP4 が使えます。 IMAPサーバーは、より良く実装されている傾向があります。
poplib モジュールでは、ひとつのクラスが提供されています。
このクラスが、実際にPOP3プロトコルを実装します。インスタンスが初期化されるときに、コネクションが作成されます。 port が省略されると、POP3標準のポート(110)が使われます。オプションの timeout 引数は、接続時のタイムアウト時間を秒数で指定します。 (指定されなかった場合は、グローバルのデフォルトタイムアウト設定が利用されます。)
バージョン 2.6 で変更: timeout が追加されました
POP3 クラスのサブクラスで、SSLでカプセル化されたソケットによる POPサーバへの接続を提供します。 port が指定されていない場合、 POP3-over-SSL標準の995番ポートが使われます。 keyfile と certfile もオプションで - SSL接続に使われる PEMフォーマットの秘密鍵と信頼された##を含みます。
バージョン 2.4 で追加.
1つの例外が、 poplib モジュールのアトリビュートとして定義されています。
例外は、このモジュール内で起こったすべてのエラーで発生します。(socket モジュールからのエラーは捕まえず、そのまま伝播します) 例外の理由は文字列としてコンストラクタに渡されます。
参考
POP3コマンドはすべて、それと同じ名前のメソッドとしてlower-caseで表現されます。そしてそのほとんどは、サーバからのレスポンスとなるテキストを返します。
POP3 クラスのインスタンスは以下のメソッドを持ちます。
インスタンスのデバッグレベルを指定します。これはデバッギングアウトプットの表示量をコントロールします。デフォルト値の 0 は、デバッギングアウトプットを表示しません。値を 1 とすると、デバッギングアウトプットの表示量を適当な量にします。これは大体、リクエストごと1行になります。値を 2 以上にすると、デバッギングアウトプットの表示量を最大にします。コントロール中の接続で送受信される各行をログに出力します。
POP3サーバーから送られるグリーティングメッセージを返します。
userコマンドを送出します。応答はパスワード要求を表示します。
パスワードを送出します。応答は、メッセージ数とメールボックスのサイズを含みます。注:サーバー上のメールボックスは quit() が呼ばれるまでロックされます。
POP3サーバーにログオンするのに、よりセキュアなAPOP認証を使用します。
POP3サーバーにログオンするのに、(UNIXのr-コマンドと同様の)RPOP認証を使用します。
メールボックスの状態を得ます。結果は2つのintegerからなるタプルとなります。 (message count, mailbox size).
メッセージのリストを要求します。結果は (response, ['mesg_num octets', ...], octets) という形式で表されます。 which が与えられると、それによりメッセージを指定します。
which 番のメッセージ全体を取り出し、そのメッセージに既読フラグを立てます。結果は (response, ['line', ...], octets) という形式で表されます。
which 番のメッセージに削除のためのフラグを立てます。ほとんどのサーバで、QUITコマンドが実行されるまでは実際の削除は行われません(もっとも良く知られた例外は Eudora QPOPで、その配送メカニズムはRFCに違反しており、どんな切断状況でも削除操作を未解決にしています)。
メールボックスの削除マークすべてを取り消します。
何もしません。接続保持のために使われます。
Signoff: commit changes, unlock mailbox, drop connection. サインオフ:変更をコミットし、メールボックスをアンロックして、接続を破棄します。
メッセージヘッダと howmuch で指定した行数のメッセージを、 which で指定したメッセージ分取り出します。結果は以下のような形式となります。 (response, ['line', ...], octets).
このメソッドはPOP3のTOPコマンドを利用し、RETRコマンドのように、メッセージに既読フラグをセットしません。残念ながら、TOPコマンドはRFCでは貧弱な仕様しか定義されておらず、しばしばノーブランドのサーバーでは(その仕様が)守られていません。このメソッドを信用してしまう前に、実際に使用するPOPサーバーでテストをしてください。
(ユニークIDによる)メッセージダイジェストのリストを返します。 which が設定されている場合、結果はユニークIDを含みます。それは 'response mesgnum uid という形式のメッセージ、または (response, ['mesgnum uid', ...], octets) という形式のリストとなります。
POP3_SSL クラスのインスタンスは追加のメソッドを持ちません。このサブクラスのインターフェイスは親クラスと同じです。
これは(エラーチェックもない)最も小さなサンプルで、メールボックスを開いて、すべてのメッセージを取り出し、プリントします。
import getpass, poplib
M = poplib.POP3('localhost')
M.user(getpass.getuser())
M.pass_(getpass.getpass())
numMessages = len(M.list()[1])
for i in range(numMessages):
for j in M.retr(i+1)[1]:
print j
モジュールの末尾に、より広い範囲の使用例となるtestセクションがあります。