-
Notifications
You must be signed in to change notification settings - Fork 1
/
plenumsmail.py
96 lines (66 loc) · 2.5 KB
/
plenumsmail.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/usr/bin/env python
#date calculations
import datetime
from dateutil import relativedelta
import ConfigParser
#email sending
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email import Charset
from email.generator import Generator
configname = "example.config"
config = ConfigParser.ConfigParser()
config.read(configname)
debug = config.getboolean("default", "debug")
mailserver = config.get("mailserver","server")
mailsender = config.get("plenumsmail", "sender")
mailreceiver = config.get("plenumsmail", "receiver")
mail_reply_receiver = config.get("plenumsmail", "reply_receiver")
invite_file_name = config.get("plenumsmail", "invite_file")
with open(invite_file_name,'r') as file:
invite_text = file.read()
invite_subject = config.get("plenumsmail", "subject")
def send_plenums_invite():
#create the message to be send
msg = MIMEText(invite_text, 'plain', 'utf-8')
msg['Subject'] = "%s" % Header(invite_subject, 'utf-8')
msg['From'] = mailsender
msg['To'] = mailreceiver
msg['Reply-To'] = mail_reply_receiver
#send the message
if not debug:
s = smtplib.SMTP(mailserver)
s.sendmail(mailsender, [mailreceiver], msg.as_string())
s.quit()
else:
print msg.as_string()
def is_a_plenum_next_tuesday(today):
#is today a thursday? else. exit, we only send invites on thursdays
if (today.isoweekday()==4):
#in 5 days will be a tuesday
next_tuesday = (today + datetime.timedelta(days=5))
assert next_tuesday.isoweekday()==2
#check, if next tuesday is the last tuesday of the month:
last_tuesday = next_tuesday + relativedelta.relativedelta(day=31, weekday=relativedelta.TU(-1))
if (next_tuesday == last_tuesday):
#send all the mails!
return True
else:
#nothing to do, next week is a normal chaostreff
return False
#TODO: catch AssertError, if today is a thursday, but in 5 days is not a tuesday.
# This would mean a library broke somewhere
else:
#nothing to do. yeah!
return False
def main():
today = datetime.datetime.today()
if is_a_plenum_next_tuesday(today):
send_plenums_invite()
else:
if debug:
print "no plenum next week"
#check if file is imported or run on its own:
if __name__ == "__main__":
main()