### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python v2.6.2 documentation »
- Python 標準ライブラリ »
- 21. インターネットプロトコルとその支援 »

# 21.9. `poplib` — POP3 プロトコルクライアント

このモジュールは、 `POP3` クラスを定義します。これはPOP3サーバへの接続と、 RFC 1725 に定められたプロトコルを実装します。 `POP3` クラスは minimalとoptinalという2つのコマンドセットをサポートします。 モジュールは `POP3_SSL` クラスも提供します。このクラスは下位のプロトコルレイヤーにSSLを使ったPOP3サーバへの接続を提供します。

POP3についての注意事項は、それが広くサポートされているにもかかわらず、既に時代遅れだということです。幾つも実装されているPOP3サーバーの品質は、 貧弱なものが多数を占めています。もし、お使いのメールサーバーがIMAPをサポートしているなら、 `imaplib や IMAP4` が使えます。 IMAPサーバーは、より良く実装されている傾向があります。

`poplib` モジュールでは、ひとつのクラスが提供されています。

class `poplib.``POP3`(host[, port[, timeout]])

  このクラスが、実際にPOP3プロトコルを実装します。インスタンスが初期化されるときに、コネクションが作成されます。 port が省略されると、POP3標準のポート(110)が使われます。 オプションの timeout 引数は、接続時のタイムアウト時間を秒数で指定します。 (指定されなかった場合は、グローバルのデフォルトタイムアウト設定が利用されます。)

  バージョン 2.6 で変更: timeout が追加されました

class `poplib.``POP3_SSL`(host[, port[, keyfile[, certfile]]])

  `POP3` クラスのサブクラスで、SSLでカプセル化されたソケットによる POPサーバへの接続を提供します。 port が指定されていない場合、 POP3-over-SSL標準の995番ポートが使われます。 keyfile と certfile もオプションで - SSL接続に使われる PEMフォーマットの秘密鍵と信頼された＃＃を含みます。

  バージョン 2.4 で追加.

1つの例外が、 `poplib` モジュールのアトリビュートとして定義されています。

exception `poplib.``error_proto`

  例外は、このモジュール内で起こったすべてのエラーで発生します。(`socket` モジュールからのエラーは捕まえず、そのまま伝播します) 例外の理由は文字列としてコンストラクタに渡されます。

参考

Module `imaplib`
  The standard Python IMAP module.
Frequently Asked Questions About Fetchmail
  POP/IMAPクライアント fetchmail のFAQ。POPプロトコルを ベースにしたアプリケーションを書くときに有用な、POP3サーバの種類や RFCへの適合度といった情報を収集しています。

## 21.9.1. POP3 オブジェクト

POP3コマンドはすべて、それと同じ名前のメソッドとしてlower-caseで表現されます。そしてそのほとんどは、サーバからのレスポンスとなる テキストを返します。

`POP3` クラスのインスタンスは以下のメソッドを持ちます。

`POP3.``set_debuglevel`(level)

  インスタンスのデバッグレベルを指定します。これはデバッギングアウトプットの表示量をコントロールします。デフォルト値の `0` は、デバッギング アウトプットを表示しません。値を `1` とすると、デバッギングアウトプットの表示量を適当な量にします。これは大体、リクエストごと1行になります。値を `2` 以上にすると、デバッギングアウトプットの表示量を最大にします。コントロール中の接続で送受信される各行をログに出力します。

`POP3.``getwelcome`()

  POP3サーバーから送られるグリーティングメッセージを返します。

`POP3.``user`(username)

  userコマンドを送出します。応答はパスワード要求を表示します。

`POP3.``pass_`(password)

  パスワードを送出します。応答は、メッセージ数とメールボックスのサイズを含みます。注：サーバー上のメールボックスは `quit()` が呼ばれるまでロックされます。

`POP3.``apop`(user, secret)

  POP3サーバーにログオンするのに、よりセキュアなAPOP認証を使用します。

`POP3.``rpop`(user)

  POP3サーバーにログオンするのに、（UNIXのr-コマンドと同様の）RPOP認証を使用します。

`POP3.``stat`()

  メールボックスの状態を得ます。結果は2つのintegerからなるタプルとなります。 `(message count, mailbox size)`.

`POP3.``list`([which])

  メッセージのリストを要求します。結果は `(response, ['mesg_num octets', ...], octets)` という形式で表されます。 which が与えられると、それによりメッセージを指定します。

`POP3.``retr`(which)

  which 番のメッセージ全体を取り出し、そのメッセージに既読フラグを立てます。結果は `(response, ['line', ...], octets)` という形式で表されます。

`POP3.``dele`(which)

  which 番のメッセージに削除のためのフラグを立てます。ほとんどのサーバで、QUITコマンドが実行されるまでは実際の削除は行われません （もっとも良く知られた例外は Eudora QPOPで、その配送メカニズムはRFCに違反しており、どんな切断状況でも削除操作を未解決にしています）。

`POP3.``rset`()

  メールボックスの削除マークすべてを取り消します。

`POP3.``noop`()

  何もしません。接続保持のために使われます。

`POP3.``quit`()

  Signoff: commit changes, unlock mailbox, drop connection. サインオフ：変更をコミットし、メールボックスをアンロックして、接続を破棄します。

`POP3.``top`(which, howmuch)

  メッセージヘッダと howmuch で指定した行数のメッセージを、 which で指定したメッセージ分取り出します。結果は以下のような形式となります。 `(response, ['line', ...], octets)`.

  このメソッドはPOP3のTOPコマンドを利用し、RETRコマンドのように、メッセージに 既読フラグをセットしません。残念ながら、TOPコマンドはRFCでは貧弱な仕様しか定義されておらず、しばしばノーブランドのサーバーでは（その仕様が）守られて いません。このメソッドを信用してしまう前に、実際に使用するPOPサーバーでテストをしてください。

`POP3.``uidl`([which])

  （ユニークIDによる）メッセージダイジェストのリストを返します。 which が設定されている場合、結果はユニークIDを含みます。それは `'response mesgnum uid` という形式のメッセージ、または `(response, ['mesgnum uid', ...], octets)` という形式のリストとなります。

`POP3_SSL` クラスのインスタンスは追加のメソッドを持ちません。このサブクラスのインターフェイスは親クラスと同じです。

## 21.9.2. POP3 の例

これは（エラーチェックもない）最も小さなサンプルで、メールボックスを開いて、すべてのメッセージを取り出し、プリントします。

    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セクションがあります。

### ナビゲーション

- 索引
- モジュール |
- 次へ |
- 前へ |
- Python v2.6.2 documentation »
- Python 標準ライブラリ »
- 21. インターネットプロトコルとその支援 »