added mail reminder script
This commit is contained in:
parent
6b7476a05e
commit
2f8c765610
|
@ -0,0 +1,8 @@
|
|||
Hallo liebe Chaoten,
|
||||
|
||||
am Samstag, den %(date)s haben wir wieder unseren Aufräumtag.
|
||||
|
||||
Wir treffen uns wie immer um 11:00 Uhr. Das ist schon in %(diff)d Tagen... *g*
|
||||
|
||||
das ctdo reminder script in volltestung
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
#/bin/sh
|
||||
|
||||
exec /home/hotte/mail_reminder/reminder.py -d 5 -r 1 -r 2 -r 3 -r 7 -r12 -m /home/hotte/mail_reminder/cleaning_reminder.txt -H mail2.ctdo.de
|
|
@ -0,0 +1,73 @@
|
|||
#!/usr/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import argparse
|
||||
import calendar
|
||||
import smtplib
|
||||
import sys
|
||||
|
||||
from datetime import datetime
|
||||
from email.mime.text import MIMEText
|
||||
from email.header import Header
|
||||
from email import charset
|
||||
|
||||
|
||||
def createMail(args, target_date, diff):
|
||||
fp = open(args.msg_template, 'r')
|
||||
# Create a text/plain message
|
||||
msg = MIMEText(fp.read() % {"date": target_date.strftime("%d.%m.%Y"), "diff":diff.days}, _charset="UTF-8")
|
||||
fp.close()
|
||||
|
||||
msg['Subject'] = Header(args.subject, "utf-8")
|
||||
msg['From'] = args.From
|
||||
msg['To'] = args.to
|
||||
return msg
|
||||
|
||||
|
||||
def getNextCleaningDate(cal, args):
|
||||
for week in reversed(cal):
|
||||
if week[args.day] != 0:
|
||||
return week[args.day]
|
||||
|
||||
|
||||
def main(args):
|
||||
today = datetime.today()
|
||||
cal = calendar.monthcalendar(today.year, today.month)
|
||||
|
||||
target_day = getNextCleaningDate(cal, args)
|
||||
target_date = datetime(today.year, today.month, target_day)
|
||||
diff = target_date - today
|
||||
|
||||
print("target_day", target_day)
|
||||
print("target_date", target_date)
|
||||
print("diff", diff)
|
||||
|
||||
if diff.days in args.reminder_days:
|
||||
charset.add_charset('utf-8', charset.QP, charset.QP)
|
||||
msg = createMail(args, target_date, diff)
|
||||
print(type(msg.as_string()))
|
||||
print("msg", msg.as_string())
|
||||
|
||||
s = smtplib.SMTP(args.host)
|
||||
s.set_debuglevel(3)
|
||||
s.sendmail(args.From, [args.to], msg.as_string())
|
||||
s.quit()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser(description="The ctdo configurable mail reminder script. " \
|
||||
"Works on the last given day in month. Sends a mail with given " \
|
||||
"'msg_template' if today is a day in the list of 'reminder_days'")
|
||||
|
||||
parser.add_argument('-d', "--day", type=int, choices=range(7), required=True, help="which last day in month? monday=0, tuesday=1, ...")
|
||||
parser.add_argument('-r', "--reminder_days", type=int, action="append", choices=range(0, 31), required=True, help="on which day to remind the crowd? 1 will be one day before, 7 a week before. May be specified multiple times.")
|
||||
parser.add_argument('-m', "--msg_template", required=True, help="The path to a a file with predefined email text to send. You can use %%(date)s and %%(diff) variables in the text.")
|
||||
parser.add_argument('-s', "--subject", default="Das bissken Haushalt aka Aufräumtag im CTDO", help="mail subject")
|
||||
parser.add_argument('-f', "--From", default="CTDOReminder <discuss@lists.chaostreff-dortmund.de>", help="mail from")
|
||||
parser.add_argument('-t', "--to", default="discuss@lists.chaostreff-dortmund.de", help="mail to")
|
||||
parser.add_argument('-H', "--host", default="", help="the smtp server to send to")
|
||||
|
||||
args = parser.parse_args(sys.argv[1:])
|
||||
|
||||
main(args)
|
||||
|
Loading…
Reference in New Issue