summaryrefslogtreecommitdiff
path: root/python/2/mailutils/mailbox.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/2/mailutils/mailbox.py')
-rw-r--r--python/2/mailutils/mailbox.py228
1 files changed, 0 insertions, 228 deletions
diff --git a/python/2/mailutils/mailbox.py b/python/2/mailutils/mailbox.py
deleted file mode 100644
index 7d4083309..000000000
--- a/python/2/mailutils/mailbox.py
+++ /dev/null
@@ -1,228 +0,0 @@
-# GNU Mailutils -- a suite of utilities for electronic mail
-# Copyright (C) 2009-2019 Free Software Foundation, Inc.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 3 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General
-# Public License along with this library. If not, see
-# <http://www.gnu.org/licenses/>.
-
-import types
-from mailutils.c_api import mailbox
-from mailutils import message
-from mailutils import folder
-from mailutils import url
-from mailutils.error import MailboxError
-
-class MailboxBase:
- def open (self, mode=0):
- """Open the connection.
-
- 'mode' may be a string, consisting of the characters described
- below, giving the access mode for the mailbox.
-
- mode Meaning
- --------------------------------------------------------
- r Open for reading.
- w Open for writing.
- a Open for appending to the end of the mailbox.
- c Create the mailbox if it does not exist.
-
- """
- if isinstance (mode, types.StringType):
- from mailutils import stream
- flags = 0
- for m in mode:
- if m == 'r':
- flags = flags | stream.MU_STREAM_READ
- elif m == 'w':
- flags = flags | stream.MU_STREAM_WRITE
- elif m == 'a':
- flags = flags | stream.MU_STREAM_APPEND
- elif m == 'c':
- flags = flags | stream.MU_STREAM_CREAT
- if flags & stream.MU_STREAM_READ and flags & stream.MU_STREAM_WRITE:
- flags = (flags & ~(stream.MU_STREAM_READ | \
- stream.MU_STREAM_WRITE)) | \
- stream.MU_STREAM_RDWR
- mode = flags
- status = mailbox.open (self.mbox, mode)
- if status:
- raise MailboxError (status)
-
- def close (self):
- """Close the connection."""
- status = mailbox.close (self.mbox)
- if status:
- raise MailboxError (status)
-
- def flush (self, expunge=False):
- """Flush the mailbox."""
- status = mailbox.flush (self.mbox, expunge)
- if status:
- raise MailboxError (status)
-
- def messages_count (self):
- """Return the number of messages in mailbox."""
- status, total = mailbox.messages_count (self.mbox)
- if status:
- raise MailboxError (status)
- return total
-
- def messages_recent (self):
- """Return the number of recent messages in mailbox."""
- status, recent = mailbox.messages_recent (self.mbox)
- if status:
- raise MailboxError (status)
- return recent
-
- def message_unseen (self):
- """Return the number of first unseen message in mailbox."""
- status, recent = mailbox.message_unseen (self.mbox)
- if status:
- raise MailboxError (status)
- return unseen
-
- def get_message (self, msgno):
- """Retrieve message number 'msgno'."""
- status, c_msg = mailbox.get_message (self.mbox, msgno)
- if status:
- raise MailboxError (status)
- return message.Message (c_msg)
-
- def append_message (self, msg):
- """Append 'msg' to the mailbox."""
- status = mailbox.append_message (self.mbox, msg.msg)
- if status:
- raise MailboxError (status)
-
- def expunge (self):
- """Remove all messages marked for deletion."""
- status = mailbox.expunge (self.mbox)
- if status:
- raise MailboxError (status)
-
- def sync (self):
- """Synchronize the mailbox."""
- status = mailbox.sync (self.mbox)
- if status:
- raise MailboxError (status)
-
- def get_uidls (self):
- """Get UIDL list."""
- status, uidls = mailbox.get_uidls (self.mbox)
- if status:
- raise MailboxError (status)
- return uidls
-
- def lock (self):
- """Lock the mailbox."""
- status = mailbox.lock (self.mbox)
- if status:
- raise MailboxError (status)
-
- def unlock (self):
- """Unlock the mailbox."""
- status = mailbox.unlock (self.mbox)
- if status:
- raise MailboxError (status)
-
- def get_size (self):
- """Return the mailbox size."""
- status, size = mailbox.get_size (self.mbox)
- if status:
- raise MailboxError (status)
- return size
-
- def get_folder (self):
- """Get the Folder object."""
- status, fld = mailbox.get_folder (self.mbox)
- if status:
- raise MailboxError (status)
- return folder.Folder (fld)
-
- def get_url (self):
- """Get the Url object."""
- status, u = mailbox.get_url (self.mbox)
- if status:
- raise MailboxError (status)
- return url.Url (u)
-
- def next (self):
- if self.__count >= self.__len:
- self.__count = 0
- raise StopIteration
- else:
- self.__count += 1
- return self.get_message (self.__count)
-
- def __getitem__ (self, msgno):
- return self.get_message (msgno)
-
- def __iter__ (self):
- self.__count = 0
- self.__len = self.messages_count ()
- return self
-
- def __getattr__ (self, name):
- if name == 'size':
- return self.get_size ()
- elif name == 'folder':
- return self.get_folder ()
- elif name == 'url':
- return self.get_url ()
- else:
- raise AttributeError, name
-
- def __len__ (self):
- return self.messages_count ()
-
- def __str__ (self):
- return '<Mailbox %s (%d)>' % (self.get_url (), self.messages_count ())
-
-class Mailbox (MailboxBase):
- __owner = False
- def __init__ (self, name):
- if isinstance (name, mailbox.MailboxType):
- self.mbox = name
- else:
- self.mbox = mailbox.MailboxType ()
- self.__owner = True
- status = mailbox.create (self.mbox, name)
- if status:
- raise MailboxError (status)
-
- def __del__ (self):
- if self.__owner:
- mailbox.destroy (self.mbox)
- del self.mbox
-
-class MailboxDefault (MailboxBase):
- def __init__ (self, name=None):
- """MailboxDefault creates a Mailbox object for the supplied
- mailbox 'name'. Before creating, the name is expanded using
- the rules below:
-
- % --> system mailbox for the real uid
- %user --> system mailbox for the given user
- ~/file --> /home/user/file
- ~user/file --> /home/user/file
- +file --> /home/user/Mail/file
- =file --> /home/user/Mail/file
- """
- self.mbox = mailbox.MailboxType ()
- status = mailbox.create_default (self.mbox, name)
- if status:
- raise MailboxError (status)
-
- def __del__ (self):
- mailbox.destroy (self.mbox)
- del self.mbox

Return to:

Send suggestions and report system problems to the System administrator.