def handle(self, *args, **options): # look for emailing to be sent self.verbosity = int(options.get("verbosity", 1)) # if len(args)>0: # dests = args[0].split(";") # else: # print 'usage: python manage.py post_newsletter [email protected];[email protected]' dests = [] tags = [] translation.activate(settings.LANGUAGE_CODE) # METHODE LIGNE DE COMMANDE AVEC FICHIER TEXTE if options["filename"] and options["newsletter"]: if not os.path.isfile(options["filename"]): raise CommandError("File does not exist at the specified path.") news = Newsletter.objects.get(id=options["newsletter"]) try: in_file = open(options["filename"], "r") tags.append(options["filename"]) for mail in in_file.readlines(): dests.append({"email": mail.rstrip("\n"), "name": None, "uuid": None}) nb_sent = send_newsletter(news, dests, tags) if self.verbosity >= 1: print nb_sent, "emails sent" finally: in_file.close() # METHODE NORMALE (DEPUIS ADMIN MAILING) elif options["newsletter"]: news = Newsletter.objects.get(id=options["newsletter"]) for ml in news.lists.all(): tags.append(ml.name) for dest in ml.dest_dicts(): dests.append(dest) if self.verbosity >= 1: print u"send_newsletter %d to %d addresses" % (news.id, len(dests)) if self.verbosity >= 3: for d in dests: print "email : %s" % d["email"] nb_sent = send_newsletter(news, dests, tags, self.verbosity) if self.verbosity >= 1: print nb_sent, "emails sent" else: print "usage: python manage.py post_newsletter --news=15 --file=adresses.txt"
def test_newsletter(request, newsletter_id): newsletter = get_object_or_404(Newsletter, id=newsletter_id) if not request.user.has_perm('can_edit_newsletter', newsletter): raise PermissionDenied dests = settings.COOP_CMS_TEST_EMAILS if request.method == "POST": try: nb_sent = send_newsletter(newsletter, dests) messages.success(request, _(u"The test email has been sent to {0} addresses: {1}").format(nb_sent, u', '.join(dests))) return HttpResponseRedirect(newsletter.get_edit_url()) except Exception, msg: messages.error(request, _(u"An error has occured.") + u'<br>' + unicode(msg)) logger = getLogger('django.request') logger.error('Internal Server Error: %s' % request.path, exc_info=sys.exc_info, extra={ 'status_code': 500, 'request': request } ) return HttpResponseRedirect(newsletter.get_edit_url())
def handle(self, *args, **options): #look for emailing to be sent self.verbosity = int(options.get('verbosity', 1)) # if len(args)>0: # dests = args[0].split(";") # else: # print 'usage: python manage.py send_newsletter [email protected];[email protected]' sendings = NewsletterSending.objects.filter(scheduling_dt__lte=datetime.now(), sending_dt=None) for sending in sendings: dests = map(lambda x: x.email, sending.newsletter.lists.all()) if self.verbosity >= 2: print 'send_newsletter {1} to {0} addresses'.format(len(dests), sending.newsletter) if self.verbosity >= 3: for d in dests: print 'address %s' % d nb_sent = send_newsletter(sending.newsletter, dests) if self.verbosity >= 2: print nb_sent, "emails sent" sending.sending_dt = datetime.now() sending.save()