]> TLD Linux GIT Repositories - tld-ftp-admin.git/blob - modules/mailer.py
- raw from PLD
[tld-ftp-admin.git] / modules / mailer.py
1 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
2
3 import time
4 import os
5 import sys
6 import StringIO
7
8 import config
9 cval=config.value
10
11 class Message:
12     def __init__(self):
13         self.headers = {}
14         self.body = StringIO.StringIO()
15         self.__set_std_headers()
16
17     def set_header(self, n, v):
18         self.headers[n] = v
19
20     def set_headers(self, to = None, cc = None, subject = None):
21         if to != None:
22             self.set_header("To", to)
23         if cc != None:
24             self.set_header("Cc", cc)
25         if subject != None:
26             self.set_header("Subject", subject)
27
28     def write_line(self, l):
29         self.body.write("%s\n" % l)
30
31     def write(self, s):
32         self.body.write(s)
33
34     def send(self):
35         send_sendmail = "/usr/sbin/sendmail -t"
36         f = os.popen(send_sendmail, "w")
37         self.__write_to(f)
38         f.close()
39
40     def __set_std_headers(self):
41         self.headers["Date"] = time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime())
42         self.headers["Message-ID"] = "<pld-builder.%f.%d@%s>" \
43                 % (time.time(), os.getpid(), os.uname()[1])
44         self.headers["From"] = cval['from_field']
45         self.headers["X-PLD-Builder"] = cval['xpldbuilder']
46
47     def __write_to(self, f):
48         for k, v in self.headers.items():
49             f.write("%s: %s\n" % (k, v))
50         f.write("\n")
51         self.body.seek(0)
52         self.__sendfile(self.body, f)
53
54     def __sendfile(self, src, dst):
55         cnt = 0
56         while 1:
57             s = src.read(10000)
58             if s == "": break
59             cnt += len(s)
60             dst.write(s)
61         return cnt
62
63