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