def send_unsent_scheduled_emails(): """ Send out any scheduled emails that are unsent """ current_time = datetime.utcnow() email_medium = get_medium() to_send = Email.objects.filter( scheduled__lte=current_time, sent__isnull=True).select_related( 'event').prefetch_related('recipients') # Fetch the contexts of every event so that they may be rendered context_loader.load_contexts_and_renderers([e.event for e in to_send], [email_medium]) emails = [] for email in to_send: to_email_addresses = get_subscribed_email_addresses(email) if to_email_addresses: text_message, html_message = email.render(email_medium) message = create_email_message( to_emails=to_email_addresses, from_email=email.from_address or get_from_email_address(), subject=email.subject or extract_email_subject_from_html_content(html_message), text=text_message, html=html_message, ) emails.append(message) connection = mail.get_connection() connection.send_messages(emails) to_send.update(sent=current_time)
def convert_events_to_emails(): """ Converts unseen events to emails and marks them as seen. """ # Get the email medium email_medium = get_medium() # Find any unseen events and create unsent email objects for event, targets in email_medium.events_targets(seen=False, mark_seen=True): Email.objects.create_email(event=event, recipients=targets)
def convert_events_to_emails(): """ Converts unseen events to emails and marks them as seen. """ # Get the email medium email_medium = get_medium() # Get the default from email default_from_email = get_from_email_address() # Find any unseen events and create unsent email objects for event, targets in email_medium.events_targets(seen=False, mark_seen=True): # Check the event's context for a from_address, otherwise fallback to default from_address = event.context.get('from_address') or default_from_email # Create the emails Email.objects.create_email(event=event, from_address=from_address, recipients=targets)
def convert_events_to_emails(): """ Converts unseen events to emails and marks them as seen. """ # Get the email medium email_medium = get_medium() # Get the default from email default_from_email = get_from_email_address() # Find any unseen events and create unsent email objects for event, targets in email_medium.events_targets(seen=False, mark_seen=True): # Check the event's context for a from_address, otherwise fallback to default from_address = event.context.get( 'from_address') or default_from_email # Create the emails Email.objects.create_email(event=event, from_address=from_address, recipients=targets)
def send_unsent_scheduled_emails(): """ Send out any scheduled emails that are unsent """ current_time = datetime.utcnow() email_medium = get_medium() to_send = Email.objects.filter( scheduled__lte=current_time, sent__isnull=True ).select_related( 'event' ).prefetch_related( 'recipients' ) # Fetch the contexts of every event so that they may be rendered context_loader.load_contexts_and_renderers([e.event for e in to_send], [email_medium]) emails = [] for email in to_send: to_email_addresses = get_subscribed_email_addresses(email) if to_email_addresses: text_message, html_message = email.render(email_medium) message = create_email_message( to_emails=to_email_addresses, from_email=email.from_address or get_from_email_address(), subject=email.subject or extract_email_subject_from_html_content(html_message), text=text_message, html=html_message, ) emails.append(message) connection = mail.get_connection() connection.send_messages(emails) to_send.update(sent=current_time)
def get(self, request, *args, **kwargs): email = self.get_email() medium = get_medium() context_loader.load_contexts_and_renderers([email.event], [medium]) txt, html = email.render(medium) return HttpResponse(html if html else txt)
def test_custom(self): custom_medium_name = 'test-email' with self.settings(ENTITY_EMAILER_MEDIUM_NAME=custom_medium_name): call_command('add_email_medium') medium = get_medium() self.assertEqual(medium.name, custom_medium_name)
def test_default(self): call_command('add_email_medium') medium = get_medium() self.assertEqual(medium.name, 'email')
def test_get_medium_default(self): medium_default_name = 'email' G(Medium, name=medium_default_name) medium = get_medium() self.assertEqual(medium.name, medium_default_name)
def test_get_medium_configured(self): custom_medium_name = 'test-email' G(Medium, name=custom_medium_name) with self.settings(ENTITY_EMAILER_MEDIUM_NAME=custom_medium_name): medium = get_medium() self.assertEqual(medium.name, custom_medium_name)