#!/usr/local/bin/python ''' Classes to make life with E-mail easier ''' import os, re, string __version__ = '0.53' class Sender: '''\ E-mail sending classes m = Email.Sender() m.sender = 'me@here.com' m.recipient = 'you@there.com' m.subject = 'test mail' m.body = 'hey, ho!' m.other_headers['X-foo'] = 'bar' try: m.send() except ValueError: print 'bad mail address. aborted.' except: print 'problem sending mail.' ''' def __init__(self, mail_program='/usr/lib/sendmail'): self.mail_program = mail_program self.sender = os.environ.get('LOGNAME', '') self.recipient = '' self.subject = '' self.body = '' self.other_headers = { 'Status': '', } def send(self): ''' send e-mail ''' if not check_address(self.sender): raise ValueError, 'invalid sender' if not check_address(self.recipient): raise ValueError, 'invalid recipient' mail = os.popen(string.join((self.mail_program, self.recipient), ' '), 'w') mail.write("Return-Path: %s\n" % (self.sender)) mail.write("From: %s\n" % (self.sender)) mail.write("To: %s\n" % (self.recipient)) mail.write("Subject: %s\n" % (self.subject)) for header, text in self.other_headers.items(): mail.write("%s: %s\n" % (header, text)) mail.write("\n") mail.write(self.body) mail.write("\n") mail.close() _address_pat = '^[^@]+@([\w\-_]+\.)+[\w\-_]{2,3}$' def check_address(address=''): ''' address validator; returns true if valid ''' if re.search(_address_pat, address, re.IGNORECASE): return 1 else: return 0