diff --git a/ssmain/email.py b/ssmain/email.py index bb73e58..9f6f4e3 100644 --- a/ssmain/email.py +++ b/ssmain/email.py @@ -56,7 +56,7 @@ class Emailer: with tempfile.NamedTemporaryFile(mode='w', encoding='utf-8', suffix='.eml') as f: print('Subject:' + subject + '\nContent-Type: multipart/alternative; boundary=boundary\n\n--boundary\nContent-Type: text/html; charset=utf-8\n\n' + content_html + '\n--boundary\nContent-Type: text/plain; charset=utf-8\n\n' + content_txt + '\n--boundary', file=f) subprocess.run(['thunderbird', f.name]) - time.sleep(0.5) + time.sleep(5) else: self.boto3_send( Destination={ diff --git a/ssmembership/management/commands/sendmdemail.py b/ssmembership/management/commands/sendmdemail.py new file mode 100644 index 0000000..9aace7d --- /dev/null +++ b/ssmembership/management/commands/sendmdemail.py @@ -0,0 +1,41 @@ +# Society Self-Service +# Copyright © 2018-2019 Yingtong Li (RunasSudo) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from django.core.management.base import BaseCommand, CommandError + +from ssmain.email import Emailer +import ssmembership.models + +class Command(BaseCommand): + help = 'Send Markdown emails' + + def add_arguments(self, parser): + parser.add_argument('template', help='Template name') + parser.add_argument('subject', help='Email subject') + parser.add_argument('ids', nargs='*', type=int, help='Members with ID numbers equal to these values will be emailed (default all)') + + def handle(self, *args, **options): + members = ssmembership.models.Member.objects.all() + + if len(options['ids']) > 0: + members = [member for member in members if member.id in options['ids']] + else: + raise Exception('Must provide IDs') + + emailer = Emailer() + for member in members: + self.stdout.write('Emailing {} at {}'.format(member.id, member.email)) + emailer.send_mail([member.email], options['subject'], 'ssmembership/email/' + options['template'] + '.md', {})