popcount.py
#!/usr/bin/env python
"""
$Id: popcount.py 275 2001-11-05 13:24:03Z david $
Counts the number of mail items awaiting retrieval
from a user"s POP3 mailbox.
Usage: popcount.py <POP3 server> <username>
"""
import getpass, poplib, sys, socket
USAGE = "Usage: %s <server> <username>" % sys.argv[0]
def die (reason=None):
"""
This exits the application with an error status
code, and optionally displays a reason.
"""
if reason:
sys.stderr.write(reason + "\n")
sys.exit(1)
def popcount (hostname, username, password):
"""
Checks a given POP3 server using a given username
and password, then returns a count of the number
of messages awaiting retrieval.
"""
nMessages = 0
try:
popserver = poplib.POP3(hostname)
popserver.user(username)
popserver.pass_(password)
nMessages = len(popserver.list()[1])
popserver.quit()
except poplib.error_proto, reason:
die("Error: %s" % reason)
except socket.error, reason:
die("Error: %s" % reason)
return nMessages
def main ():
"""
Allows popcount to be run as a simple UNIX command
line utility.
"""
try:
# Get command line arguments
hostname = sys.argv[1]
username = sys.argv[2]
except IndexError:
# Not supplied, print usage
die(USAGE)
password = getpass.getpass()
nMessages = popcount(hostname, username, password)
print "You have %d messages awaiting retrieval" % nMessages
if __name__ == "__main__":
main()
|