oacpl/newsletters/management/commands/sendnewsletters.py

31 lines
1.3 KiB
Python
Raw Normal View History

2018-02-26 18:13:02 -05:00
import mimetypes
2017-09-15 16:30:20 -04:00
from django.db.models import Q
2018-02-22 00:10:18 -05:00
from django.core.mail import EmailMessage
2017-09-15 16:30:20 -04:00
from django.core.management.base import BaseCommand
from django.utils import timezone
from OACPL import settings
2017-09-30 15:25:06 -04:00
from OACPL.utils import url_fix_render_to_string
2017-09-15 16:30:20 -04:00
from newsletters.models import Newsletter, Subscriber
class Command(BaseCommand):
help = 'Send out newsletter emails to subscribers'
def handle(self, *args, **options):
newsletters = Newsletter.objects.filter(Q(sent=False) & Q(publish__lte=timezone.now()))
subscribers = Subscriber.objects.all().values_list('email', flat=True)
2017-09-29 16:21:21 -04:00
print('Found %s unsent newsletters' % len(newsletters))
print('Found %s subscribers' % len(subscribers))
2017-09-15 16:30:20 -04:00
for newsletter in newsletters:
2017-09-29 20:07:05 -04:00
print('Sending newsletter: "%s"' % newsletter.subject)
2018-02-22 00:10:18 -05:00
msg = EmailMessage(subject=newsletter.subject, body=url_fix_render_to_string('email.html', {'content': newsletter.body, 'unsubscribe': True}), from_email=settings.EMAIL_HOST_USER, bcc=subscribers)
msg.content_subtype = 'html'
2018-02-26 18:13:02 -05:00
for attachment in newsletter.attachments.all():
msg.attach(attachment.name(), attachment.file.read(), mimetypes.guess_type(attachment.name())[0])
2018-02-22 00:10:18 -05:00
msg.send()
2017-09-15 16:30:20 -04:00
newsletter.sent = True
newsletter.save()
print('Complete!')