# vi: encoding=utf-8 ts=8 sts=4 sw=4 et import time import os import sys if sys.version_info[0] == 2: import StringIO else: import io as StringIO import config cval=config.value class Message: def __init__(self): self.headers = {} self.body = StringIO.StringIO() self.__set_std_headers() def set_header(self, n, v): self.headers[n] = v def set_headers(self, to = None, cc = None, subject = None): if to != None: self.set_header("To", to) if cc != None: self.set_header("Cc", cc) if subject != None: self.set_header("Subject", subject) def write_line(self, l): self.body.write("%s\n" % l) def write(self, s): self.body.write(s) def send(self): send_sendmail = "/usr/sbin/sendmail -t" f = os.popen(send_sendmail, "w") self.__write_to(f) f.close() def __set_std_headers(self): self.headers["Date"] = time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()) self.headers["Message-ID"] = "" \ % (time.time(), os.getpid(), os.uname()[1]) self.headers["From"] = cval['from_field'] self.headers["X-TLD-Builder"] = cval['xtldbuilder'] def __write_to(self, f): for k, v in self.headers.items(): f.write("%s: %s\n" % (k, v)) f.write("\n") self.body.seek(0) self.__sendfile(self.body, f) def __sendfile(self, src, dst): cnt = 0 while 1: s = src.read(10000) if s == "": break cnt += len(s) dst.write(s) return cnt