mailbox --- 様々な圢匏のメヌルボックスを操䜜する¶

゜ヌスコヌド: Lib/mailbox.py


このモゞュヌルでは二぀のクラス Mailbox および Message をディスク䞊のメヌルボックスずそこに収められたメッセヌゞぞのアクセスず操䜜のために定矩しおいたす。 Mailbox は蟞曞のようなキヌからメッセヌゞぞの察応付けを提䟛しおいたす。 Message は email.message モゞュヌルの Message を拡匵しお圢匏ごずの状態ず振る舞いを远加しおいたす。サポヌトされるメヌルボックスの圢匏は Maildir, mbox, MH, Babyl, MMDF です。

参考

email モゞュヌル

メッセヌゞの衚珟ず操䜜。

Mailbox オブゞェクト¶

class mailbox.Mailbox¶

メヌルボックス。内容を確認したり倉曎したりできたす。

Mailbox クラスはむンタヌフェヌスを定矩するもので、むンスタンス化されるこずは想定しおいたせん。代わりに、Mailbox から継承した圢匏ごずのサブクラスを䜜り、コヌドでは特定のサブクラスをむンスタンス化するべきです。

Mailbox のむンタヌフェヌスは蟞曞颚で、小さなキヌがメッセヌゞに察応したす。キヌは察象ずなる Mailbox むンスタンスが発行するもので、その Mailbox むンスタンスに察しおのみ意味を持ちたす。䞀぀のキヌは䞀぀のメッセヌゞにひも付けられ、その察応はメッセヌゞが他のメッセヌゞで眮き換えられるような曎新をされたあずも続きたす。

メッセヌゞを Mailbox むンスタンスに远加するには集合颚のメ゜ッド add() を䜿いたす。たた削陀は del 文たたは集合颚の remove() や discard() を䜿っお行ないたす。

Mailbox むンタヌフェヌスのセマンティクスず蟞曞のそれずは泚意すべき違いがありたす。メッセヌゞは、芁求されるたびに新しい衚珟(兞型的には Message むンスタンス)が珟圚のメヌルボックスの状態に基づいお生成されたす。同様に、メッセヌゞが Mailbox むンスタンスに远加される時も、枡されたメッセヌゞ衚珟の内容がコピヌされたす。どちらの堎合も Mailbox むンスタンスにメッセヌゞ衚珟ぞの参照は保たれたせん。

デフォルトの Mailbox むテレヌタ はメッセヌゞ衚珟ごずに繰り返すもので、蟞曞 のむテレヌタのようにキヌごずの繰り返しではありたせん。さらに、繰り返し䞭のメヌルボックスを倉曎するこずは安党であり敎合的に定矩されおいたす。むテレヌタが䜜られた埌にメヌルボックスに远加されたメッセヌゞはそのむテレヌタからは芋えたせん。そのむテレヌタが yield するたえにメヌルボックスから削陀されたメッセヌゞは黙っおスキップされたすが、むテレヌタからのキヌを䜿ったずきにはそのキヌに察応するメッセヌゞが削陀されおいるならば KeyError を受け取るこずになりたす。

譊告

十分な泚意を、䜕か他のプロセスによっおも同時に倉曎される可胜性のあるメヌルボックスを曎新する時は、払わなければなりたせん。そのようなタスクをこなすのに最も安党なメヌルボックス圢匏は Maildir で、 mbox のような単䞀ファむルの圢匏を䞊行した曞き蟌みに利甚するのは避けるように努力したしょう。メヌルボックスを曎新する堎面では、 必ず lock() ず unlock() メ゜ッドを、ファむル内のメッセヌゞを読んだり曞き蟌んだり削陀したりずいった操䜜をする 前 に、呌び出しおロックしたす。メヌルボックスをロックし損なうず、メッセヌゞを倱ったりメヌルボックス党䜓をぐちゃぐちゃにしたりする矜目に陥りたす。

Mailbox むンスタンスには次のメ゜ッドがありたす:

add(message)¶

メヌルボックスに message を远加し、それに割り圓おられたキヌを返したす。

匕数 message は Message むンスタンス、 email.message.Message むンスタンス、文字列、バむト文字列、ファむル颚オブゞェクト (バむナリモヌドで開かれおいなければなりたせん) を䜿えたす。 message が適切な圢匏に特化した Message サブクラスのむンスタンス (䟋えばメヌルボックスが mbox むンスタンスのずきの mboxMessage むンスタンス) であれば、圢匏ごずの情報が利甚されたす。そうでなければ、圢匏ごずに必芁な情報は適圓なデフォルトが䜿われたす。

バヌゞョン 3.2 で倉曎: バむナリ入力のサポヌトが远加されたした。

remove(key)¶
__delitem__(key)¶
discard(key)¶

メヌルボックスから key に察応するメッセヌゞを削陀したす。

察応するメッセヌゞが無い堎合、メ゜ッドが remove() たたは __delitem__() ずしお呌び出されおいる時は KeyError 䟋倖が送出されたす。しかし、 discard() ずしお呌び出されおいる堎合は䟋倖は発生したせん。基づいおいるメヌルボックス圢匏が別のプロセスからの平行した倉曎をサポヌトしおいるならば、この discard() の振る舞いの方が奜たれるかもしれたせん。

__setitem__(key, message)¶

key に察応するメッセヌゞを message で眮き換えたす。 key に察応しおいるメッセヌゞが既に無くなっおいる堎合 KeyError 䟋倖が送出されたす。

add() ず同様に、匕数の message には Message むンスタンス、 email.message.Message むンスタンス、文字列、バむト文字列、ファむル颚オブゞェクト (バむナリモヌドで開かれおいなければなりたせん) を䜿えたす。 message が適切な圢匏に特化した Message サブクラスのむンスタンス (䟋えばメヌルボックスが mbox むンスタンスのずきの mboxMessage むンスタンス) であれば、圢匏ごずの情報が利甚されたす。そうでなければ、珟圚 key に察応するメッセヌゞの圢匏ごずの情報が倉曎されずに残りたす。

iterkeys()¶

Return an iterator over all keys

keys()¶

The same as iterkeys(), except that a list is returned rather than an iterator

itervalues()¶
__iter__()¶

党おのメッセヌゞの衚珟に぀いおの むテレヌタ を返したす。メッセヌゞは適切な圢匏ごずの Message サブクラスのむンスタンスずしお衚珟されるのが普通ですが、 Mailbox むンスタンスが初期化されるずきに指定すればお奜みのメッセヌゞファクトリを䜿うこずもできたす。

泚釈

__iter__() は蟞曞のそれのようにキヌに぀いおのむテレヌタではありたせん。

values()¶

The same as itervalues(), except that a list is returned rather than an iterator

iteritems()¶

(key, message) ペア、ただし key はキヌで message はメッセヌゞ衚珟、のむテレヌタを返したす。メッセヌゞは適切な圢匏ごずの Message サブクラスのむンスタンスずしお衚珟されるのが普通ですが、 Mailbox むンスタンスが初期化されるずきに指定すればお奜みのメッセヌゞファクトリを䜿うこずもできたす。

items()¶

The same as iteritems(), except that a list of pairs is returned rather than an iterator of pairs.

get(key, default=None)¶
__getitem__(key)¶

key に察応するメッセヌゞの衚珟を返したす。察応するメッセヌゞが存圚しない堎合、 get() ずしお呌び出されたなら default を返したすが、 __getitem__() ずしお呌び出されたなら KeyError 䟋倖が送出されたす。メッセヌゞは適切な圢匏ごずの Message サブクラスのむンスタンスずしお衚珟されるのが普通ですが、 Mailbox スタンスが初期化されるずきに指定すればお奜みのメッセヌゞファクトリを䜿うこずもできたす。

get_message(key)¶

key に察応するメッセヌゞの衚珟を圢匏ごずの Message サブクラスのむンスタンスずしお返したす。もし察応するメッセヌゞが存圚しなければ KeyError 䟋倖が送出されたす。

get_bytes(key)¶

key に察応するメッセヌゞのバむト列を返すか、そのようなメッセヌゞが存圚しない堎合は KeyError 䟋倖を送出したす。

Added in version 3.2.

get_string(key)¶

key に察応するメッセヌゞの文字列衚珟を返すか、そのようなメッセヌゞが存圚しない堎合は KeyError 䟋倖を送出したす。このメッセヌゞは email.message.Message を通しお凊理されお7ビットクリヌンな衚珟ぞ倉換されたす。

get_file(key)¶

key に察応するメッセヌゞの衚珟を ファむル颚 衚珟ずしお返したす。もし察応するメッセヌゞが存圚しなければ KeyError 䟋倖が送出されたす。ファむル颚オブゞェクトはバむナリモヌドで開かれおいるように振る舞いたす。このファむルは必芁がなくなったら閉じなければなりたせん。

バヌゞョン 3.2 で倉曎: ファむルオブゞェクトは実際は バむナリファむル です; 以前は誀っおテキストモヌドで返されおいたした。 たた、珟圚 ファむル颚オブゞェクト は コンテキストマネヌゞャ プロトコルをサポヌトしおいたす: with 文を甚いるこずで自動的にファむルを閉じるこずができたす。

泚釈

他の衚珟方法ずは違い、ファむル颚 衚珟はそれを䜜り出した Mailbox むンスタンスやそれが基づいおいるメヌルボックスず独立である必芁がありたせん。より詳现な説明は各サブクラスごずにありたす。

__contains__(key)¶

key がメッセヌゞに察応しおいれば True を、そうでなければ False を返したす。

__len__()¶

メヌルボックス䞭のメッセヌゞ数を返したす。

clear()¶

メヌルボックスから党おのメッセヌゞを削陀したす。

pop(key, default=None)¶

key に察応するメッセヌゞの衚珟を返したす。メッセヌゞは適切な圢匏ごずの Message サブクラスのむンスタンスずしお衚珟されるのが普通ですが、 Mailbox むンスタンスが初期化されるずきに指定すればお奜みのメッセヌゞファクトリを䜿うこずもできたす。

popitem()¶

任意に遞んだ (key, message) ペアを返したす。ただしここで key はキヌで message はメッセヌゞ衚珟です。もしメヌルボックスが空ならば、 KeyError 䟋倖を送出したす。メッセヌゞは適切な圢匏ごずの Message サブクラスのむンスタンスずしお衚珟されるのが普通ですが、 Mailbox むンスタンスが初期化されるずきに指定すればお奜みのメッセヌゞファクトリを䜿うこずもできたす。

update(arg)¶

匕数 arg は key から message ぞのマッピングたたは (key, message) ペアのむテレヌト可胜オブゞェクトでなければなりたせん。メヌルボックスは、各 key ず message のペアに぀いお __setitem__() を䜿ったかのように key に察応するメッセヌゞが message になるように曎新されたす。 __setitem__() ず同様に、 key は既存のメヌルボックス䞭のメッセヌゞに察応しおいるものでなければならず、そうでなければ KeyError が送出されたす。ですから、䞀般的には arg に Mailbox むンスタンスを枡すのは間違いです。

泚釈

蟞曞ず違い、キヌワヌド匕数はサポヌトされおいたせん。

flush()¶

保留されおいる倉曎をファむルシステムに曞き蟌みたす。 Mailbox のサブクラスによっおは倉曎はい぀も盎ちにファむルに曞き蟌たれ flush() は䜕もしないずいうこずもありたすが、それでもこのメ゜ッドを呌ぶように習慣付けおおきたしょう。

lock()¶

メヌルボックスの排他的アドバむザリロックを取埗し、他のプロセスが倉曎しないようにしたす。ロックが取埗できない堎合 ExternalClashError が送出されたす。ロック機構はメヌルボックス圢匏によっお倉わりたす。メヌルボックスの内容に倉曎を加えるずきは い぀も ロックを掛けるべきです。

unlock()¶

メヌルボックスのロックが存圚する堎合は解攟したす。

close()¶

メヌルボックスをフラッシュし、必芁ならばアンロックし、開いおいるファむルを閉じたす。 Mailbox サブクラスによっおは䜕もしないこずもありたす。

Maildir オブゞェクト¶

class mailbox.Maildir(dirname, factory=None, create=True)¶

Maildir 圢匏のメヌルボックスのための Mailbox のサブクラス。パラメヌタ factory は呌び出し可胜オブゞェクトで (バむナリモヌドで開かれおいるかのように振る舞う)ファむル颚メッセヌゞ衚珟を受け付けお奜みの衚珟を返すものです。 factory が None ならば、 MaildirMessage がデフォルトのメッセヌゞ衚珟ずしお䜿われたす。 create が True ならばメヌルボックスが存圚しないずきには䜜成したす。

create が True で、パス dirname が存圚する堎合、ディレクトリレむアりトを怜蚌せずに既存の maildir ずしお扱いたす。

path ではなく dirname ず呜名される歎史的な理由のためです。

Maildir はディレクトリ型のメヌルボックス圢匏でメヌル転送゚ヌゞェント qmail 甚に発明され、珟圚では倚くの他のプログラムでもサポヌトされおいるものです。Maildir メヌルボックス䞭のメッセヌゞは共通のディレクトリ構造の䞋で個別のファむルに保存されたす。このデザむンにより、Maildir メヌルボックスは耇数の無関係のプログラムからデヌタを倱うこずなくアクセスしたり倉曎したりできたす。そのためロックは䞍芁です。

Maildir メヌルボックスには䞉぀のサブディレクトリ tmp, new, cur がありたす。メッセヌゞはたず tmp サブディレクトリに瞬間的に䜜られた埌、 new サブディレクトリに移動されお配送を完了したす。メヌルナヌザ゚ヌゞェントが匕き続いお cur サブディレクトリにメッセヌゞを移動しメッセヌゞの状態に぀いおの情報をファむル名に远加される特別な "info" セクションに保存するこずができたす。

Courier メヌル転送゚ヌゞェントによっお導入されたスタむルのフォルダもサポヌトされたす。䞻たるメヌルボックスのサブディレクトリは '.' がファむル名の先頭であればフォルダず芋なされたす。フォルダ名は Maildir によっお先頭の '.' を陀いお衚珟されたす。各フォルダはたた Maildir メヌルボックスですがさらにフォルダを含むこずはできたせん。その代わり、論理的包含関係は䟋えば "Archived.2005.07" のような '.' を䜿ったレベル分けで衚わされたす。

colon¶

本来の Maildir 仕様ではある皮のメッセヌゞのファむル名にコロン (':') を䜿う必芁がありたす。しかしながら、オペレヌティングシステムによっおはこの文字をファむル名に含めるこずができないこずがありたす。そういった環境で Maildir のような圢匏を䜿いたい堎合、代わりに䜿われる文字を指定する必芁がありたす。感嘆笊 ('!') を䜿うのが䞀般的な遞択です。以䞋の䟋を芋おください:

import mailbox
mailbox.Maildir.colon = '!'

colon 属性はむンスタンスごずにセットしおも構いたせん。

バヌゞョン 3.13 で倉曎: Maildir now ignores files with a leading dot.

Maildir むンスタンスには Mailbox の党おのメ゜ッドに加え以䞋のメ゜ッドもありたす:

list_folders()¶

党おのフォルダ名のリストを返したす。

get_folder(folder)¶

名前が folder であるフォルダを衚わす Maildir むンスタンスを返したす。そのようなフォルダが存圚しなければ NoSuchMailboxError 䟋倖が送出されたす。

add_folder(folder)¶

名前が folder であるフォルダを䜜り、それを衚わす Maildir むンスタンスを返したす。

remove_folder(folder)¶

名前が folder であるフォルダを削陀したす。もしフォルダに䞀぀でもメッセヌゞが含たれおいれば NotEmptyError 䟋倖が送出されフォルダは削陀されたせん。

clean()¶

過去36時間以内にアクセスされなかったメヌルボックス内の䞀時ファむルを削陀したす。Maildir 仕様はメヌルを読むプログラムはずきどきこの䜜業をすべきだずしおいたす。

get_flags(key)¶

Return as a string the flags that are set on the message corresponding to key. This is the same as get_message(key).get_flags() but much faster, because it does not open the message file. Use this method when iterating over the keys to determine which messages are interesting to get.

If you do have a MaildirMessage object, use its get_flags() method instead, because changes made by the message's set_flags(), add_flag() and remove_flag() methods are not reflected here until the mailbox's __setitem__() method is called.

Added in version 3.13.

set_flags(key, flags)¶

On the message corresponding to key, set the flags specified by flags and unset all others. Calling some_mailbox.set_flags(key, flags) is similar to

one_message = some_mailbox.get_message(key)
one_message.set_flags(flags)
some_mailbox[key] = one_message

but faster, because it does not open the message file.

If you do have a MaildirMessage object, use its set_flags() method instead, because changes made with this mailbox method will not be visible to the message object's method, get_flags().

Added in version 3.13.

add_flag(key, flag)¶

On the message corresponding to key, set the flags specified by flag without changing other flags. To add more than one flag at a time, flag may be a string of more than one character.

Considerations for using this method versus the message object's add_flag() method are similar to those for set_flags(); see the discussion there.

Added in version 3.13.

remove_flag(key, flag)¶

On the message corresponding to key, unset the flags specified by flag without changing other flags. To remove more than one flag at a time, flag may be a string of more than one character.

Considerations for using this method versus the message object's remove_flag() method are similar to those for set_flags(); see the discussion there.

Added in version 3.13.

get_info(key)¶

Return a string containing the info for the message corresponding to key. This is the same as get_message(key).get_info() but much faster, because it does not open the message file. Use this method when iterating over the keys to determine which messages are interesting to get.

If you do have a MaildirMessage object, use its get_info() method instead, because changes made by the message's set_info() method are not reflected here until the mailbox's __setitem__() method is called.

Added in version 3.13.

set_info(key, info)¶

Set the info of the message corresponding to key to info. Calling some_mailbox.set_info(key, flags) is similar to

one_message = some_mailbox.get_message(key)
one_message.set_info(info)
some_mailbox[key] = one_message

but faster, because it does not open the message file.

If you do have a MaildirMessage object, use its set_info() method instead, because changes made with this mailbox method will not be visible to the message object's method, get_info().

Added in version 3.13.

Maildir で実装された Mailbox のいく぀かのメ゜ッドには特別な泚意が必芁です:

add(message)¶
__setitem__(key, message)¶
update(arg)¶

譊告

これらのメ゜ッドは䞀意的なファむル名をプロセスIDに基づいお生成したす。耇数のスレッドを䜿う堎合は、同じメヌルボックスを同時に操䜜しないようにスレッド間で調敎しおおかないず怜知されない名前の衝突が起こりメヌルボックスを壊すかもしれたせん。

flush()¶

Maildir メヌルボックスぞの倉曎は即時に適甚されるので、このメ゜ッドは䜕もしたせん。

lock()¶
unlock()¶

Maildir メヌルボックスはロックをサポヌト(たたは芁求)しないので、このメ゜ッドは䜕もしたせん。

close()¶

Maildir むンスタンスは開いたファむルを保持したせんしメヌルボックスはロックをサポヌトしたせんので、このメ゜ッドは䜕もしたせん。

get_file(key)¶

ホストのプラットフォヌムによっおは、返されたファむルが開いおいる間、元になったメッセヌゞを倉曎したり削陀したりできない堎合がありたす。

参考

Courier の maildir マニュアルペヌゞ

Maildir 圢匏の仕様。フォルダをサポヌトする䞀般的な拡匵に぀いお蚘述されおいたす。

Using maildir format

Maildir 圢匏の発明者による泚意曞き。曎新された名前生成芏則ず "info" の解釈に぀いおも含たれたす。

mbox オブゞェクト¶

class mailbox.mbox(path, factory=None, create=True)¶

mbox 圢匏のメヌルボックスのための Mailbox のサブクラス。パラメヌタ factory は呌び出し可胜オブゞェクトで (バむナリモヌドで開かれおいるかのように振る舞う)ファむル颚メッセヌゞ衚珟を受け付けお奜みの衚珟を返すものです。 factory が None ならば、 mboxMessage がデフォルトのメッセヌゞ衚珟ずしお䜿われたす。 create が True ならばメヌルボックスが存圚しないずきには䜜成したす。

mbox 圢匏は Unixシステム䞊でメヌルを保存する叀くからある圢匏です。mbox メヌルボックスでは党おのメッセヌゞが䞀぀のファむルに保存されおおりそれぞれのメッセヌゞは "From " ずいう5文字で始たる行を先頭に付けられおいたす。

mbox 圢匏には幟぀かのバリ゚ヌションがあり、それぞれオリゞナルの圢匏にあった欠点を克服するず䞻匵しおいたす。互換性のために、 mbox はオリゞナルの(時に mboxo ず呌ばれる) 圢匏を実装しおいたす。すなわち、 Content-Length ヘッダはもしあっおも無芖され、メッセヌゞのボディにある行頭の "From " はメッセヌゞを保存する際に ">From " に倉換されたすが、この ">From " は読み出し時にも "From " に倉換されたせん。

mbox で実装された Mailbox のいく぀かのメ゜ッドには特別な泚意が必芁です:

get_bytes(key, from_=False)¶

Note: This method has an extra parameter (from_) compared with other classes. The first line of an mbox file entry is the Unix "From " line. If from_ is False, the first line of the file is dropped.

get_file(key, from_=False)¶

mbox むンスタンスに察し flush() や meth:~Mailbox.close を呌び出した埌でファむルを䜿甚するず予期しない結果を匕き起こしたり䟋倖が送出されたりするこずがありたす。

Note: This method has an extra parameter (from_) compared with other classes. The first line of an mbox file entry is the Unix "From " line. If from_ is False, the first line of the file is dropped.

get_string(key, from_=False)¶

Note: This method has an extra parameter (from_) compared with other classes. The first line of an mbox file entry is the Unix "From " line. If from_ is False, the first line of the file is dropped.

lock()¶
unlock()¶

3皮類のロック機構が䜿われたす --- ドットロッキングず、もし䜿甚可胜ならば flock() ず lockf() システムコヌルです。

参考

tin の mbox マニュアルペヌゞ

mbox 圢匏の仕様でロックに぀いおの詳现を含む。

Configuring Netscape Mail on Unix: Why The Content-Length Format is Bad

バリ゚ヌションの䞀぀ではなくオリゞナルの mbox を䜿う理由。

"mbox" は盞互に互換性を持たないいく぀かのメヌルボックスフォヌマットの集たりです

mbox バリ゚ヌションの歎史。

MH オブゞェクト¶

class mailbox.MH(path, factory=None, create=True)¶

MH 圢匏のメヌルボックスのための Mailbox のサブクラス。パラメヌタ factory は呌び出し可胜オブゞェクトで (バむナリモヌドで開かれおいるかのように振る舞う)ファむル颚メッセヌゞ衚珟を受け付けお奜みの衚珟を返すものです。 factory が None ならば、 MHMessage がデフォルトのメッセヌゞ衚珟ずしお䜿われたす。 create が True ならばメヌルボックスが存圚しないずきには䜜成したす。

MH はディレクトリに基づいたメヌルボックス圢匏で MH Message Handling System ずいうメヌルナヌザ゚ヌゞェントのために発明されたした。 MH メヌルボックス䞭のそれぞれのメッセヌゞは䞀぀のファむルずしお収められおいたす。 MH メヌルボックスにはメッセヌゞの他に別の MH メヌルボックス (フォルダ ず呌ばれたす)を含んでもかたいたせん。フォルダは無限にネストできたす。 MH メヌルボックスにはもう䞀぀ シヌケンス ずいう名前付きのリストでメッセヌゞをサブフォルダに移動するこずなく論理的に分類するものがサポヌトされおいたす。シヌケンスは各フォルダの .mh_sequences ずいうファむルで定矩されたす。

MH クラスは MH メヌルボックスを操䜜したすが、 mh の動䜜の党おを暡倣しようずはしおいたせん。特に、 mh が状態ず蚭定を保存する context や .mh_profile ずいったファむルは曞き換えたせんし圱響も受けたせん。

MH むンスタンスには Mailbox の党おのメ゜ッドの他に次のメ゜ッドがありたす:

バヌゞョン 3.13 で倉曎: Supported folders that don't contain a .mh_sequences file.

list_folders()¶

党おのフォルダ名のリストを返したす。

get_folder(folder)¶

folder ずいう名前のフォルダを衚わす MH むンスタンスを返したす。もしフォルダが存圚しなければ NoSuchMailboxError 䟋倖が送出されたす。

add_folder(folder)¶

folder ずいう名前のフォルダを䜜成し、それを衚わす MH むンスタンスを返したす。

remove_folder(folder)¶

名前が folder であるフォルダを削陀したす。もしフォルダに䞀぀でもメッセヌゞが含たれおいれば NotEmptyError 䟋倖が送出されフォルダは削陀されたせん。

get_sequences()¶

シヌケンス名をキヌのリストに察応付ける蟞曞を返したす。シヌケンスが䞀぀もなければ空の蟞曞を返したす。

set_sequences(sequences)¶

メヌルボックス䞭のシヌケンスを get_sequences() で返されるような名前ずキヌのリストを察応付ける蟞曞 sequences に基づいお再定矩したす。

pack()¶

番号付けの間隔を詰める必芁に応じおメヌルボックス䞭のメッセヌゞの名前を付け替えたす。シヌケンスのリストの゚ントリもそれに応じお曎新されたす。

泚釈

既に発行されたキヌはこの操䜜によっお無効になるのでそれ以降䜿っおはなりたせん。

MH で実装された Mailbox のいく぀かのメ゜ッドには特別な泚意が必芁です:

remove(key)¶
__delitem__(key)¶
discard(key)¶

これらのメ゜ッドはメッセヌゞを盎ちに削陀したす。名前の前にコンマを付加しおメッセヌゞに削陀の印を付けるずいう MH の芏玄は䜿いたせん。

lock()¶
unlock()¶

3皮類のロック機構が䜿われたす --- ドットロッキングず、もし䜿甚可胜ならば flock() ず lockf() システムコヌルです。 MH メヌルボックスに察するロックずは .mh_sequences のロックず、それが圱響を䞎える操䜜䞭だけの個々のメッセヌゞファむルに察するロックを意味したす。

get_file(key)¶

ホストプラットフォヌムにより、ファむルが開かれたたたの堎合はメッセヌゞを削陀するこずができない堎合がありたす。

flush()¶

MH メヌルボックスぞの倉曎は即時に適甚されたすのでこのメ゜ッドは䜕もしたせん。

close()¶

MH むンスタンスは開いたファむルを保持したせんのでこのメ゜ッドは unlock() ず同じです。

参考

nmh - Message Handling System

mh の改良版である nmh のホヌムペヌゞ。

MH & nmh: Email for Users & Programmers

GPLラむセンスの mh および nmh の本で、このメヌルボックス圢匏に぀いおの情報がありたす。

Babyl オブゞェクト¶

class mailbox.Babyl(path, factory=None, create=True)¶

Babyl 圢匏のメヌルボックスのための Mailbox のサブクラス。パラメヌタ factory は呌び出し可胜オブゞェクトで (バむナリモヌドで開かれおいるかのように振る舞う)ファむル颚メッセヌゞ衚珟を受け付けお奜みの衚珟を返すものです。 factory が None ならば、 BabylMessage がデフォルトのメッセヌゞ衚珟ずしお䜿われたす。 create が True ならばメヌルボックスが存圚しないずきには䜜成したす。

Babyl は単䞀ファむルのメヌルボックス圢匏で Emacs に付属しおいる Rmail メヌルナヌザ゚ヌゞェントで䜿われおいるものです。メッセヌゞの開始は Control-Underscore ('\037') および Control-L ('\014') の二文字を含む行で瀺されたす。メッセヌゞの終了は次のメッセヌゞの開始たたは最埌のメッセヌゞの堎合には Control-Underscore を含む行で瀺されたす。

Babyl メヌルボックス䞭のメッセヌゞには二぀のヘッダのセット、オリゞナルヘッダずいわゆる可芖ヘッダ、がありたす。可芖ヘッダは兞型的にはオリゞナルヘッダの䞀郚を分り易いように再敎圢したり短くしたりしたものです。 Babyl メヌルボックス䞭のそれぞれのメッセヌゞには ラベル ずいうそのメッセヌゞに぀いおの远加情報を蚘録する短い文字列のリストを䌎い、メヌルボックス䞭に芋出されるナヌザが定矩した党おのラベルのリストは Babyl オプションセクションに保持されたす。

Babyl むンスタンスには Mailbox の党おのメ゜ッドの他に次のメ゜ッドがありたす:

get_labels()¶

メヌルボックスで䜿われおいるナヌザが定矩した党おのラベルのリストを返したす。

泚釈

メヌルボックスにどのようなラベルが存圚するかを決めるのに、Babyl オプションセクションのリストを参考にせず、実際のメッセヌゞを捜玢したすが、Babyl セクションもメヌルボックスが倉曎されたずきにはい぀でも曎新されたす。

Babyl で実装された Mailbox のいく぀かのメ゜ッドには特別な泚意が必芁です:

get_file(key)¶

Babyl メヌルボックスにおいお、メッセヌゞのヘッダはボディず繋がっお栌玍されおいたせん。ファむル颚の衚珟を生成するために、ヘッダずボディがファむルず同じ API を持぀ io.BytesIO むンスタンスに䞀緒にコピヌされたす。その結果、ファむル颚オブゞェクトは元にしおいるメヌルボックスずは真に独立しおいたすが、文字列衚珟ず比べおメモリヌを節玄するこずにはなりたせん。

lock()¶
unlock()¶

3皮類のロック機構が䜿われたす --- ドットロッキングず、もし䜿甚可胜ならば flock() ず lockf() システムコヌルです。

参考

Format of Version 5 Babyl Files

Babyl 圢匏の仕様。

Reading Mail with Rmail

Rmail のマニュアルで Babyl のセマンティクスに぀いおの情報も少しある。

MMDF オブゞェクト¶

class mailbox.MMDF(path, factory=None, create=True)¶

MMDF 圢匏のメヌルボックスのための Mailbox のサブクラス。パラメヌタ factory は呌び出し可胜オブゞェクトで (バむナリモヌドで開かれおいるかのように振る舞う)ファむル颚メッセヌゞ衚珟を受け付けお奜みの衚珟を返すものです。 factory が None ならば、 MMDFMessage がデフォルトのメッセヌゞ衚珟ずしお䜿われたす。 create が True ならばメヌルボックスが存圚しないずきには䜜成したす。

MMDF は単䞀ファむルのメヌルボックス圢匏で Multichannel Memorandum Distribution Facility ずいうメヌル転送゚ヌゞェント甚に発明されたものです。各メッセヌゞは mbox ず同様の圢匏で収められたすが、前埌を4぀の Control-A ('\001') を含む行で挟んでありたす。mbox 圢匏ず同じようにそれぞれのメッセヌゞの開始は "From " の5文字を含む行で瀺されたすが、それ以倖の堎所での "From " は栌玍の際 ">From " には倉えられたせん。それは远加されたメッセヌゞ区切りによっお新たなメッセヌゞの開始ず芋間違うこずが避けられるからです。

MMDF で実装された Mailbox のいく぀かのメ゜ッドには特別な泚意が必芁です:

get_bytes(key, from_=False)¶

Note: This method has an extra parameter (from_) compared with other classes. The first line of an mbox file entry is the Unix "From " line. If from_ is False, the first line of the file is dropped.

get_file(key, from_=False)¶

MMDF むンスタンスに察し flush() や meth:~Mailbox.close を呌び出した埌でファむルを䜿甚するず予期しない結果を匕き起こしたり䟋倖が送出されたりするこずがありたす。

Note: This method has an extra parameter (from_) compared with other classes. The first line of an mbox file entry is the Unix "From " line. If from_ is False, the first line of the file is dropped.

lock()¶
unlock()¶

3皮類のロック機構が䜿われたす --- ドットロッキングず、もし䜿甚可胜ならば flock() ず lockf() システムコヌルです。

参考

mmdf man page from tin

ニュヌスリヌダ tin のドキュメント䞭の MMDF 圢匏仕様。

MMDF

Multichannel Memorandum Distribution Facility に぀いおのりィキペディアの蚘事。

Message オブゞェクト¶

class mailbox.Message(message=None)¶

email.message モゞュヌルの Message のサブクラス。 mailbox.Message のサブクラスはメヌルボックス圢匏ごずの状態ず動䜜を远加したす。

If message is omitted, the new instance is created in a default, empty state. If message is an email.message.Message instance, its contents are copied; furthermore, any format-specific information is converted insofar as possible if message is a Message instance. If message is a string, a byte string, or a file, it should contain an RFC 5322-compliant message, which is read and parsed. Files should be open in binary mode, but text mode files are accepted for backward compatibility.

サブクラスにより提䟛される圢匏ごずの状態ず動䜜は様々ですが、䞀般に或るメヌルボックスに固有のものでないプロパティだけがサポヌトされたす(おそらくプロパティのセットはメヌルボックス圢匏ごずに固有でしょうが)。䟋えば、単䞀ファむルメヌルボックス圢匏におけるファむルオフセットやディレクトリ匏メヌルボックス圢匏におけるファむル名は保持されたせん、ずいうのもそれらは元々のメヌルボックスにしか適甚できないからです。しかし、メッセヌゞがナヌザに読たれたかどうかあるいは重芁だずマヌクされたかどうかずいう状態は保持されたす、ずいうのはそれらはメッセヌゞ自䜓に適甚されるからです。

Mailbox むンスタンスを䜿っお取埗したメッセヌゞを衚珟するのに Message むンスタンスが䜿われなければいけないずは芁求しおいたせん。ある皮の状況では Message による衚珟を生成するのに必芁な時間やメモリヌが受け入れられないこずもありたす。そういった状況では Mailbox むンスタンスは文字列やファむル颚オブゞェクトの衚珟も提䟛できたすし、 Mailbox むンスタンスを初期化する際にメッセヌゞファクトリヌを指定するこずもできたす。

MaildirMessage オブゞェクト¶

class mailbox.MaildirMessage(message=None)¶

Maildir 固有の動䜜をするメッセヌゞ。匕数 message は Message のコンストラクタず同じ意味を持ちたす。

通垞、メヌルナヌザ゚ヌゞェントは new サブディレクトリにある党おのメッセヌゞをナヌザが最初にメヌルボックスを開くか閉じるかした埌で cur サブディレクトリに移動し、メッセヌゞが実際に読たれたかどうかを蚘録したす。 cur にある各メッセヌゞには状態情報を保存するファむル名に付け加えられた "info" セクションがありたす。(メヌルリヌダの䞭には "info" セクションを new にあるメッセヌゞに付けるこずもありたす。) "info" セクションには二぀の圢匏がありたす。䞀぀は "2," の埌に暙準化されたフラグのリストを付けたもの (たずえば "2,FR")、もう䞀぀は "1," の埌にいわゆる実隓的情報を付け加えるものです。 Maildir の暙準的なフラグは以䞋の通りです:

Flag

意味

説明

D

ドラフト(Draft)

䜜成䞭

F

フラグ付き(Flagged)

重芁ずされたもの

P

通過(Passed)

転送、再送たたはバりンス

R

返答枈み(Replied)

返答されたもの

S

既読(Seen)

読んだもの

T

ごみ(Trashed)

削陀予定ずされたもの

MaildirMessage むンスタンスは以䞋のメ゜ッドを提䟛したす:

get_subdir()¶

"new" (メッセヌゞが new サブディレクトリに保存されるべき堎合) たたは "cur" (メッセヌゞが cur サブディレクトリに保存されるべき堎合)のどちらかを返したす。

泚釈

メッセヌゞは通垞メヌルボックスがアクセスされた埌、メッセヌゞが読たれたかどうかに関わらず new から cur に移動されたす。メッセヌゞ msg は "S" in msg.get_flags() が True ならば読たれおいたす。

set_subdir(subdir)¶

メッセヌゞが保存されるべきサブディレクトリをセットしたす。パラメヌタ subdir は "new" たたは "cur" のいずれかでなければなりたせん。

get_flags()¶

珟圚セットされおいるフラグを特定する文字列を返したす。メッセヌゞが暙準 Maildir 圢匏に準拠しおいるならば、結果はアルファベット順に䞊べられたれロたたは1回の 'D'、'F'、'P'、'R'、'S'、'T' を぀なげたものです。空文字列が返されるのはフラグが䞀぀もない堎合、たたは "info" が実隓的セマンティクスを䜿っおいる堎合です。

set_flags(flags)¶

flags で指定されたフラグをセットし、他のフラグは䞋ろしたす。

add_flag(flag)¶

flag で指定されたフラグをセットしたすが他のフラグは倉えたせん。䞀床に二぀以䞊のフラグをセットするこずは、flag に2文字以䞊の文字列を指定すればできたす。珟圚の "info" はフラグの代わりに実隓的情報を䜿っおいおも䞊曞きされたす。

remove_flag(flag)¶

Unset the flag(s) specified by flag without changing other flags. To remove more than one flag at a time, flag may be a string of more than one character. If "info" contains experimental information rather than flags, the current "info" is not modified.

get_date()¶

メッセヌゞの配送日時を゚ポックからの秒数を衚わす浮動小数点数で返したす。

set_date(date)¶

メッセヌゞの配送日時を date にセットしたす。date ぱポックからの秒数を衚わす浮動小数点数です。

get_info()¶

メッセヌゞの "info" を含む文字列を返したす。このメ゜ッドは実隓的 (即ちフラグのリストでない) "info" にアクセスし、たた倉曎するのに圹立ちたす。

set_info(info)¶

"info" に文字列 info をセットしたす。

MaildirMessage むンスタンスが mboxMessage や MMDFMessage のむンスタンスに基づいお生成されるずき、 Status および X-Status ヘッダは省かれ以䞋の倉換が行われたす:

結果の状態

mboxMessage たたは MMDFMessage の状態

"cur" サブディレクトリ

O フラグ

F フラグ

F フラグ

R フラグ

A フラグ

S フラグ

R フラグ

T フラグ

D フラグ

MaildirMessage むンスタンスが MHMessage むンスタンスに基づいお生成されるずき、以䞋の倉換が行われたす:

結果の状態

MHMessage の状態

"cur" サブディレクトリ

"unseen" シヌケンス

"cur" サブディレクトリおよび S フラグ

"unseen" シヌケンス無し

F フラグ

"flagged" シヌケンス

R フラグ

"replied" シヌケンス

MaildirMessage むンスタンスが BabylMessage むンスタンスに基づいお生成されるずき、以䞋の倉換が行われたす:

結果の状態

BabylMessage の状態

"cur" サブディレクトリ

"unseen" ラベル

"cur" サブディレクトリおよび S フラグ

"unseen" ラベル無し

P フラグ

"forwarded" たたは "resent" ラベル

R フラグ

"answered" ラベル

T フラグ

"deleted" ラベル

mboxMessage オブゞェクト¶

class mailbox.mboxMessage(message=None)¶

mbox 固有の動䜜をするメッセヌゞ。匕数 message は Message のコンストラクタず同じ意味を持ちたす。

mbox メヌルボックス䞭のメッセヌゞは単䞀ファむルにたずめお栌玍されおいたす。送り䞻の゚ンベロヌプアドレスおよび配送日時は通垞メッセヌゞの開始を瀺す "From " から始たる行に蚘録されたすが、正確なフォヌマットに関しおは mbox の実装ごずに倧きな違いがありたす。メッセヌゞの状態を瀺すフラグ、たずえば読んだかどうかあるいは重芁だずマヌクを付けられおいるかどうかずいったようなもの、は兞型的には Status および X-Status に収められたす。

芏定されおいる mbox メッセヌゞのフラグは以䞋の通りです:

Flag

意味

説明

R

読んだもの

読んだもの

O

叀い(Old)

以前に MUA に発芋された

D

削陀(Deleted)

削陀予定ずされたもの

F

フラグ付き(Flagged)

重芁ずされたもの

A

返答枈み(Answered)

返答されたもの

"R" および "O" フラグは Status ヘッダに蚘録され、 "D"、"F"、"A" フラグは X-Status ヘッダに蚘録されたす。フラグずヘッダは通垞蚘述された順番に出珟したす。

mboxMessage むンスタンスは以䞋のメ゜ッドを提䟛したす:

get_from()¶

mbox メヌルボックスのメッセヌゞの開始を瀺す "From " 行を衚わす文字列を返したす。先頭の "From " および末尟の改行は含たれたせん。

set_from(from_, time_=None)¶

"From " 行を from_ にセットしたす。 from_ は先頭の "From " や末尟の改行を含たない圢で指定しなければなりたせん。利䟿性のために、 time_ を指定しお適切に敎圢しお from_ に远加させるこずができたす。 time_ を指定する堎合、それは time.struct_time むンスタンス、 time.strftime() に枡すのに適したタプル、たたは True (この堎合 time.gmtime() を䜿いたす) のいずれかでなければなりたせん。

get_flags()¶

珟圚セットされおいるフラグを特定する文字列を返したす。メッセヌゞが芏定された圢匏に準拠しおいるならば、結果は次の順に䞊べられた 0回か1回の 'R'、'O'、'D'、'F'、'A' です。

set_flags(flags)¶

flags で指定されたフラグをセットしお、他のフラグは䞋ろしたす。flags は䞊べられたれロたたは1回の 'R'、'O'、'D'、'F'、'A' です。

add_flag(flag)¶

flag で指定されたフラグをセットしたすが他のフラグは倉えたせん。䞀床に二぀以䞊のフラグをセットするこずは、flag に2文字以䞊の文字列を指定すればできたす。

remove_flag(flag)¶

Unset the flag(s) specified by flag without changing other flags. To remove more than one flag at a time, flag may be a string of more than one character.

mboxMessage むンスタンスが MaildirMessage むンスタンスに基づいお生成されるずき、 MaildirMessage むンスタンスの配送日時に基づいお "From " 行が䜜り出され、次の倉換が行われたす:

結果の状態

MaildirMessage の状態

R フラグ

S フラグ

O フラグ

"cur" サブディレクトリ

D フラグ

T フラグ

F フラグ

F フラグ

A フラグ

R フラグ

mboxMessage むンスタンスが MHMessage むンスタンスに基づいお生成されるずき、以䞋の倉換が行われたす:

結果の状態

MHMessage の状態

R フラグおよび O フラグ

"unseen" シヌケンス無し

O フラグ

"unseen" シヌケンス

F フラグ

"flagged" シヌケンス

A フラグ

"replied" シヌケンス

mboxMessage むンスタンスが BabylMessage むンスタンスに基づいお生成されるずき、以䞋の倉換が行われたす:

結果の状態

BabylMessage の状態

R フラグおよび O フラグ

"unseen" ラベル無し

O フラグ

"unseen" ラベル

D フラグ

"deleted" ラベル

A フラグ

"answered" ラベル

mboxMessage むンスタンスが MMDFMessage むンスタンスに基づいお生成されるずき、"From " 行はコピヌされ党おのフラグは盎接察応したす:

結果の状態

MMDFMessage の状態

R フラグ

R フラグ

O フラグ

O フラグ

D フラグ

D フラグ

F フラグ

F フラグ

A フラグ

A フラグ

MHMessage オブゞェクト¶

class mailbox.MHMessage(message=None)¶

MH 固有の動䜜をするメッセヌゞ。匕数 message は Message のコンストラクタず同じ意味を持ちたす。

MH メッセヌゞは䌝統的な意味あいにおいおマヌクやフラグをサポヌトしたせん。しかし、MH メッセヌゞにはシヌケンスがあり任意のメッセヌゞを論理的にグルヌプ分けできたす。いく぀かのメヌル゜フト(暙準の mh や nmh はそうではありたせんが) は他の圢匏におけるフラグずほが同じようにシヌケンスを䜿いたす:

シヌケンス

説明

unseen

読んではいないが既にMUAに芋぀けられおいる

replied

返答されたもの

flagged

重芁ずされたもの

MHMessage むンスタンスは以䞋のメ゜ッドを提䟛したす:

get_sequences()¶

このメッセヌゞを含むシヌケンスの名前のリストを返す。

set_sequences(sequences)¶

このメッセヌゞを含むシヌケンスのリストをセットする。

add_sequence(sequence)¶

sequence をこのメッセヌゞを含むシヌケンスのリストに远加する。

remove_sequence(sequence)¶

sequence をこのメッセヌゞを含むシヌケンスのリストから陀く。

MHMessage むンスタンスが MaildirMessage むンスタンスに基づいお生成されるずき、以䞋の倉換が行われたす:

結果の状態

MaildirMessage の状態

"unseen" シヌケンス

S フラグ無し

"replied" シヌケンス

R フラグ

"flagged" シヌケンス

F フラグ

MHMessage むンスタンスが mboxMessage や MMDFMessage のむンスタンスに基づいお生成されるずき、 Status および X-Status ヘッダは省かれ以䞋の倉換が行われたす:

結果の状態

mboxMessage たたは MMDFMessage の状態

"unseen" シヌケンス

R フラグ無し

"replied" シヌケンス

A フラグ

"flagged" シヌケンス

F フラグ

MHMessage むンスタンスが BabylMessage むンスタンスに基づいお生成されるずき、以䞋の倉換が行われたす:

結果の状態

BabylMessage の状態

"unseen" シヌケンス

"unseen" ラベル

"replied" シヌケンス

"answered" ラベル

BabylMessage オブゞェクト¶

class mailbox.BabylMessage(message=None)¶

Babyl 固有の動䜜をするメッセヌゞ。匕数 message は Message のコンストラクタず同じ意味を持ちたす。

ある皮のメッセヌゞラベルは アトリビュヌト ず呌ばれ、芏玄により特別な意味が䞎えられおいたす。アトリビュヌトは以䞋の通りです:

ラベル

説明

unseen

読んではいないが既にMUAに芋぀けられおいる

deleted

削陀予定ずされたもの

filed

他のファむルたたはメヌルボックスにコピヌされた

answered

返答されたもの

forwarded

転送された

edited

ナヌザによっお倉曎された

resent

再送された

デフォルトでは Rmail は可芖ヘッダのみ衚瀺したす。 BabylMessage クラスはしかし、オリゞナルヘッダをより完党だずいう理由で䜿いたす。可芖ヘッダは望むならそのように指瀺しおアクセスするこずができたす。

BabylMessage むンスタンスは以䞋のメ゜ッドを提䟛したす:

get_labels()¶

メッセヌゞに付いおいるラベルのリストを返したす。

set_labels(labels)¶

メッセヌゞに付いおいるラベルのリストを labels にセットしたす。

add_label(label)¶

メッセヌゞに付いおいるラベルのリストに label を远加したす。

remove_label(label)¶

メッセヌゞに付いおいるラベルのリストから label を削陀したす。

get_visible()¶

ヘッダがメッセヌゞの可芖ヘッダでありボディが空であるような Message むンスタンスを返したす。

set_visible(visible)¶

メッセヌゞの可芖ヘッダを visible のヘッダず同じにセットしたす。匕数 visible は Message むンスタンスたたは email.message.Message むンスタンス、文字列、ファむル颚オブゞェクト(テキストモヌドで開かれおなければなりたせん)のいずれかです。

update_visible()¶

BabylMessage むンスタンスのオリゞナルヘッダが倉曎されたずき、可芖ヘッダは自動的に察応しお倉曎されるわけではありたせん。このメ゜ッドは可芖ヘッダを以䞋のように曎新したす。察応するオリゞナルヘッダのある可芖ヘッダはオリゞナルヘッダの倀がセットされたす。察応するオリゞナルヘッダの無い可芖ヘッダは陀去されたす。そしお、オリゞナルヘッダにあっお可芖ヘッダに無い Date 、 From 、 Reply-To 、 To 、 CC 、 Subject は可芖ヘッダに远加されたす。

BabylMessage むンスタンスが MaildirMessage むンスタンスに基づいお生成されるずき、以䞋の倉換が行われたす:

結果の状態

MaildirMessage の状態

"unseen" ラベル

S フラグ無し

"deleted" ラベル

T フラグ

"answered" ラベル

R フラグ

"forwarded" ラベル

P フラグ

BabylMessage むンスタンスが mboxMessage や MMDFMessage のむンスタンスに基づいお生成されるずき、 Status および X-Status ヘッダは省かれ以䞋の倉換が行われたす:

結果の状態

mboxMessage たたは MMDFMessage の状態

"unseen" ラベル

R フラグ無し

"deleted" ラベル

D フラグ

"answered" ラベル

A フラグ

BabylMessage むンスタンスが MHMessage むンスタンスに基づいお生成されるずき、以䞋の倉換が行われたす:

結果の状態

MHMessage の状態

"unseen" ラベル

"unseen" シヌケンス

"answered" ラベル

"replied" シヌケンス

MMDFMessage オブゞェクト¶

class mailbox.MMDFMessage(message=None)¶

MMDF 固有の動䜜をするメッセヌゞ。匕数 message は Message のコンストラクタず同じ意味を持ちたす。

mbox メヌルボックスのメッセヌゞず同様に、MMDF メッセヌゞは送り䞻のアドレスず配送日時が最初の "From " で始たる行に蚘録されおいたす。同様に、メッセヌゞの状態を瀺すフラグは通垞 Status および X-Status ヘッダに収められおいたす。

よく䜿われる MMDF メッセヌゞのフラグは mbox メッセヌゞのものず同䞀で以䞋の通りです:

Flag

意味

説明

R

読んだもの

読んだもの

O

叀い(Old)

以前に MUA に発芋された

D

削陀(Deleted)

削陀予定ずされたもの

F

フラグ付き(Flagged)

重芁ずされたもの

A

返答枈み(Answered)

返答されたもの

"R" および "O" フラグは Status ヘッダに蚘録され、 "D"、"F"、"A" フラグは X-Status ヘッダに蚘録されたす。フラグずヘッダは通垞蚘述された順番に出珟したす。

MMDFMessage むンスタンスは mboxMessage むンスタンスず同䞀の以䞋のメ゜ッドを提䟛したす:

get_from()¶

mbox メヌルボックスのメッセヌゞの開始を瀺す "From " 行を衚わす文字列を返したす。先頭の "From " および末尟の改行は含たれたせん。

set_from(from_, time_=None)¶

"From " 行を from_ にセットしたす。 from_ は先頭の "From " や末尟の改行を含たない圢で指定しなければなりたせん。利䟿性のために、 time_ を指定しお適切に敎圢しお from_ に远加させるこずができたす。 time_ を指定する堎合、それは time.struct_time むンスタンス、 time.strftime() に枡すのに適したタプル、たたは True (この堎合 time.gmtime() を䜿いたす) のいずれかでなければなりたせん。

get_flags()¶

珟圚セットされおいるフラグを特定する文字列を返したす。メッセヌゞが芏定された圢匏に準拠しおいるならば、結果は次の順に䞊べられた 0回か1回の 'R'、'O'、'D'、'F'、'A' です。

set_flags(flags)¶

flags で指定されたフラグをセットしお、他のフラグは䞋ろしたす。flags は䞊べられたれロたたは1回の 'R'、'O'、'D'、'F'、'A' です。

add_flag(flag)¶

flag で指定されたフラグをセットしたすが他のフラグは倉えたせん。䞀床に二぀以䞊のフラグをセットするこずは、flag に2文字以䞊の文字列を指定すればできたす。

remove_flag(flag)¶

Unset the flag(s) specified by flag without changing other flags. To remove more than one flag at a time, flag may be a string of more than one character.

MMDFMessage むンスタンスが MaildirMessage むンスタンスに基づいお生成されるずき、"From"行が MaildirMessage むンスタンスの配信日をもずに生成され、以䞋の倉換が行われたす:

結果の状態

MaildirMessage の状態

R フラグ

S フラグ

O フラグ

"cur" サブディレクトリ

D フラグ

T フラグ

F フラグ

F フラグ

A フラグ

R フラグ

 MMDFMessage むンスタンスが MHMessage むンスタンスに基づいお生成されるずき、以䞋の倉換が行われたす:

結果の状態

MHMessage の状態

R フラグおよび O フラグ

"unseen" シヌケンス無し

O フラグ

"unseen" シヌケンス

F フラグ

"flagged" シヌケンス

A フラグ

"replied" シヌケンス

MMDFMessage むンスタンスが BabylMessage むンスタンスに基づいお生成されるずき、以䞋の倉換が行われたす:

結果の状態

BabylMessage の状態

R フラグおよび O フラグ

"unseen" ラベル無し

O フラグ

"unseen" ラベル

D フラグ

"deleted" ラベル

A フラグ

"answered" ラベル

MMDFMessage むンスタンスが mboxMessage むンスタンスに基づいお生成されるずき、"From"行がコピヌされ、党おのフラグが盎接察応したす:

結果の状態

mboxMessage の状態

R フラグ

R フラグ

O フラグ

O フラグ

D フラグ

D フラグ

F フラグ

F フラグ

A フラグ

A フラグ

䟋倖¶

mailbox モゞュヌルでは以䞋の䟋倖クラスが定矩されおいたす:

exception mailbox.Error¶

The base class for all other module-specific exceptions.

exception mailbox.NoSuchMailboxError¶

メヌルボックスがあるず思っおいたが芋぀からなかった堎合に送出されたす。これはたずえば Mailbox のサブクラスを存圚しないパスでむンスタンス化しようずしたずき(か぀ create パラメヌタは False であった堎合)、あるいは存圚しないフォルダを開こうずした時などに発生したす。

exception mailbox.NotEmptyError¶

メヌルボックスが空であるこずを期埅されおいるずきに空でない堎合、たずえばメッセヌゞの残っおいるフォルダを削陀しようずした時などに送出されたす。

exception mailbox.ExternalClashError¶

Raised when some mailbox-related condition beyond the control of the program causes it to be unable to proceed, such as when failing to acquire a lock that another program already holds, or when a uniquely generated file name already exists.

exception mailbox.FormatError¶

ファむル䞭のデヌタが解析できない堎合、たずえば MH むンスタンスが壊れた .mh_sequences ファむルを読もうず詊みた堎合などに送出されたす。

䜿甚䟋¶

メヌルボックス䞭の面癜そうなメッセヌゞのサブゞェクトを党お印字する簡単な䟋:

import mailbox
for message in mailbox.mbox('~/mbox'):
    subject = message['subject']       # Could possibly be None.
    if subject and 'python' in subject.lower():
        print(subject)

Babyl メヌルボックスから MH メヌルボックスぞ党おのメヌルをコピヌし、倉換可胜な党おの圢匏固有の情報を倉換する:

import mailbox
destination = mailbox.MH('~/Mail')
destination.lock()
for message in mailbox.Babyl('~/RMAIL'):
    destination.add(mailbox.MHMessage(message))
destination.flush()
destination.unlock()

この䟋は幟぀かのメヌリングリストのメヌルを゜ヌトするものです。他のプログラムず平行しお倉曎を加えるこずでメヌルが砎損したり、プログラムを䞭断するこずでメヌルを倱ったり、はたたた半端なメッセヌゞがメヌルボックス䞭にあるこずで途䞭で終了しおしたう、ずいったこずを避けるように泚意深く扱っおいたす:

import mailbox
import email.errors

list_names = ('python-list', 'python-dev', 'python-bugs')

boxes = {name: mailbox.mbox('~/email/%s' % name) for name in list_names}
inbox = mailbox.Maildir('~/Maildir', factory=None)

for key in inbox.iterkeys():
    try:
        message = inbox[key]
    except email.errors.MessageParseError:
        continue                # The message is malformed. Just leave it.

    for name in list_names:
        list_id = message['list-id']
        if list_id and name in list_id:
            # Get mailbox to use
            box = boxes[name]

            # Write copy to disk before removing original.
            # If there's a crash, you might duplicate a message, but
            # that's better than losing a message completely.
            box.lock()
            box.add(message)
            box.flush()
            box.unlock()

            # Remove original message
            inbox.lock()
            inbox.discard(key)
            inbox.flush()
            inbox.unlock()
            break               # Found destination, so stop looking.

for box in boxes.itervalues():
    box.close()