def test_update_newsletter_status_advanced(self): self.server.mails_hour = 2 self.server.save() mailer = Mailer(self.newsletter) mailer.smtp = FakeSMTP() mailer.run() self.assertEquals(mailer.smtp.mails_sent, 2) self.assertEquals( ContactMailingStatus.objects.filter( status=ContactMailingStatus.SENT, newsletter=self.newsletter).count(), 2) self.assertEquals(self.newsletter.status, Newsletter.SENDING) self.server.mails_hour = 0 self.server.save() mailer = Mailer(self.newsletter) mailer.smtp = FakeSMTP() mailer.run() self.assertEquals(mailer.smtp.mails_sent, 2) self.assertEquals( ContactMailingStatus.objects.filter( status=ContactMailingStatus.SENT, newsletter=self.newsletter).count(), 4) self.assertEquals(self.newsletter.status, Newsletter.SENT)
def send_mail_test(self, request, queryset): """Send newsletter in test""" for newsletter in queryset: if newsletter.test_contacts.count(): mailer = Mailer(newsletter, test=True) try: mailer.run() except HTMLParseError: self.message_user(request, _('Unable send newsletter, due to errors within HTML.')) continue self.message_user(request, _('%s succesfully sent.') % newsletter) else: self.message_user(request, _('No test contacts assigned for %s.') % newsletter)
def test_run(self): mailer = Mailer(self.newsletter) mailer.smtp = FakeSMTP() mailer.run() self.assertEquals(mailer.smtp.mails_sent, 4) self.assertEquals(ContactMailingStatus.objects.filter( status=ContactMailingStatus.SENT, newsletter=self.newsletter).count(), 4) mailer = Mailer(self.newsletter, test=True) mailer.smtp = FakeSMTP() mailer.run() self.assertEquals(mailer.smtp.mails_sent, 2) self.assertEquals(ContactMailingStatus.objects.filter( status=ContactMailingStatus.SENT_TEST, newsletter=self.newsletter).count(), 2) mailer.smtp = None
def handle_noargs(self, **options): verbose = int(options['verbosity']) if verbose: print 'Starting sending newsletters...' activate(settings.LANGUAGE_CODE) for newsletter in Newsletter.objects.exclude( status=Newsletter.DRAFT).exclude(status=Newsletter.SENT): mailer = Mailer(newsletter, verbose=verbose) if mailer.can_send: if verbose: print 'Start emailing %s' % codecs.encode(newsletter.title,"utf-8") mailer.run() if verbose: print 'End session sending'
def handle_noargs(self, **options): verbose = int(options['verbosity']) if verbose: print 'Starting sending newsletters...' activate(settings.LANGUAGE_CODE) for newsletter in Newsletter.objects.exclude( status=Newsletter.DRAFT).exclude(status=Newsletter.SENT): mailer = Mailer(newsletter, verbose=verbose) if mailer.can_send: if verbose: print 'Start emailing %s' % codecs.encode( newsletter.title, "utf-8") mailer.run() if verbose: print 'End session sending'
def send_mail_test(self, request, queryset): """Send newsletter in test""" for newsletter in queryset: if newsletter.test_contacts.count(): mailer = Mailer(newsletter, test=True) try: mailer.run() except HTMLParseError: self.message_user( request, _('Unable send newsletter, due to errors within HTML.') ) continue self.message_user(request, _('%s succesfully sent.') % newsletter) else: self.message_user( request, _('No test contacts assigned for %s.') % newsletter)
def test_recipients_refused(self): server = SMTPServer.objects.create(name='Local SMTP', host='localhost') contact = Contact.objects.create(email='thisisaninvalidemail') self.newsletter.test_contacts.clear() self.newsletter.test_contacts.add(contact) self.newsletter.server = server self.newsletter.save() self.assertEquals(contact.valid, True) self.assertEquals(ContactMailingStatus.objects.filter( status=ContactMailingStatus.INVALID, newsletter=self.newsletter).count(), 0) mailer = Mailer(self.newsletter, test=True) mailer.run() self.assertEquals(Contact.objects.get(email='thisisaninvalidemail').valid, False) self.assertEquals(ContactMailingStatus.objects.filter( status=ContactMailingStatus.INVALID, newsletter=self.newsletter).count(), 1)
def test_run(self): mailer = Mailer(self.newsletter) mailer.smtp = FakeSMTP() mailer.run() self.assertEquals(mailer.smtp.mails_sent, 4) self.assertEquals( ContactMailingStatus.objects.filter( status=ContactMailingStatus.SENT, newsletter=self.newsletter).count(), 4) mailer = Mailer(self.newsletter, test=True) mailer.smtp = FakeSMTP() mailer.run() self.assertEquals(mailer.smtp.mails_sent, 2) self.assertEquals( ContactMailingStatus.objects.filter( status=ContactMailingStatus.SENT_TEST, newsletter=self.newsletter).count(), 2) mailer.smtp = None
def test_recipients_refused(self): server = SMTPServer.objects.create(name='Local SMTP', host='localhost') contact = Contact.objects.create(email='thisisaninvalidemail') self.newsletter.test_contacts.clear() self.newsletter.test_contacts.add(contact) self.newsletter.server = server self.newsletter.save() self.assertEquals(contact.valid, True) self.assertEquals( ContactMailingStatus.objects.filter( status=ContactMailingStatus.INVALID, newsletter=self.newsletter).count(), 0) mailer = Mailer(self.newsletter, test=True) mailer.run() self.assertEquals( Contact.objects.get(email='thisisaninvalidemail').valid, False) self.assertEquals( ContactMailingStatus.objects.filter( status=ContactMailingStatus.INVALID, newsletter=self.newsletter).count(), 1)
def test_update_newsletter_status_advanced(self): self.server.mails_hour = 2 self.server.save() mailer = Mailer(self.newsletter) mailer.smtp = FakeSMTP() mailer.run() self.assertEquals(mailer.smtp.mails_sent, 2) self.assertEquals(ContactMailingStatus.objects.filter( status=ContactMailingStatus.SENT, newsletter=self.newsletter).count(), 2) self.assertEquals(self.newsletter.status, Newsletter.SENDING) self.server.mails_hour = 0 self.server.save() mailer = Mailer(self.newsletter) mailer.smtp = FakeSMTP() mailer.run() self.assertEquals(mailer.smtp.mails_sent, 2) self.assertEquals(ContactMailingStatus.objects.filter( status=ContactMailingStatus.SENT, newsletter=self.newsletter).count(), 4) self.assertEquals(self.newsletter.status, Newsletter.SENT)
def celery_send_newsletter(newsletter, *args, **kwargs): mailer = Mailer(newsletter) if mailer.can_send: mailer.run(send_all=True) return mailer.can_send