Exemple #1
0
 def handle(self, *args, **options):
     self.options = options
     testing = True if 1 < len(args) else False
     sys.stdout = Unbuffered(sys.stdout)
     issue_number = args[0]
     context = read_newsletter_context(issue_number)
     # context['imgpath_prefix'] = 'cid:'
     newsletter_context_vars(context, issue_number)
     # subject = Header((u'[試寄] ' if testing else '') + context['params']['title'], 'utf-8')
     from_email = '"Mozilla Taiwan" <*****@*****.**>'
     text_content = render_to_string('newsletter/%s/mail.txt' % issue_number, context)
     html_content = render_to_string('newsletter/%s/index.html' % issue_number, context)
     mail_content = premailer.transform(html_content)
     soup = BeautifulSoup(html_content)
     subject = Header((u'[測試] ' if testing else '') + soup.title.string, 'utf-8')
     # headers = {'Reply-To': '*****@*****.**'}
     headers = {}
     # charset = 'utf-8'
     # image_path = 'bedrock/newsletter/templates/newsletter/%s/images/' % issue_number
     # images = [f for f in listdir(image_path) if not f.startswith('.') and isfile(join(image_path, f))]
     if not testing:
         with open('subscriptions.txt') as file:
             subscriptions = file.readlines()
             for subscription in subscriptions:
                 self.send_mail(subject, headers, from_email, (subscription.rstrip(), ),
                                text_content, mail_content, issue_number)
                 sleep(10)
     elif args[1] == 'presend':
         for mail_address in NEWSLETTER_PRESEND_LIST:
             self.send_mail(subject, headers, from_email, (mail_address, ), text_content, mail_content, issue_number)
             sleep(10)
     else:
         self.send_mail(subject, headers, from_email, (args[1], ), text_content, mail_content, issue_number)
Exemple #2
0
def issue(request, issue_number=None, path=None):
    if not path or path == 'index.html':
        context = read_newsletter_context(issue_number, False)
        newsletter_context_vars(context, issue_number)
        return l10n_utils.render(request,
                                 'newsletter/%s/index.html' % issue_number,
                                 context)
    elif path == 'mail.txt':
        context = read_newsletter_context(issue_number, False)
        newsletter_context_vars(context, issue_number)
        response = render_to_string('newsletter/%s/mail.txt' % issue_number, context)
        return HttpResponse(response, content_type='text/plain')
    elif path == 'email.gif':
        track_page('/newsletter/%s/email' % issue_number)
        response = HttpResponse('', content_type='image/gif')
        response['Pragma'] = 'no-cache'
        response['Cache-Control'] = 'private, no-cache, no-cache=Set-Cookie, proxy-revalidate'
        response['Expires'] = 'Wed, 17 Sep 1975 21:32:10 GMT'
        response.write('R0lGODlhAQABAID/AP///wAAACwAAAAAAQABAAACAkQBADs='.decode('base64'))
        return response
    else:
        return serve(request, path, 'bedrock/newsletter/templates/newsletter/%s' % issue_number)
Exemple #3
0
    def handle(self, *args, **options):
        self.options = options
        testing = True if 1 < len(args) else False
        sys.stdout = Unbuffered(sys.stdout)
        comobj = self

        @jingo.register.filter
        def load_image(file):
            comobj.mail_images += [file, ]
            return comobj.image_prefix + file

        template = args[0]
        image_path = 'media/img/%s/' % template[:template.rfind('/')]

        if options['attach-images']:
            self.image_prefix = 'cid:'
        else:
            self.image_prefix = 'http://%s/%s' % (MOCO_URL, image_path)

        campaign = template.split('/')[-1].replace('-', '')
        from_email = '"Mozilla Taiwan" <*****@*****.**>'
        context = {
            'tracking_code': ('?utm_source=edm&utm_medium=email&utm_campaign=%s&utm_content=mozilla' % campaign),
            'is_web': options['export-markup']
        }
        newsletter_context_vars(context)
        text_content = render_to_string('%s.txt' % template, context)
        html_content = render_to_string('%s.html' % template, context)

        if options['export-markup']:
            import codecs
            with codecs.open(args[1], 'w', 'utf-8') as f:
                f.write(html_content)
            return

        soup = BeautifulSoup(html_content)
        subject = Header(soup.title.string.encode('utf8'), 'utf-8')
        mail_content = premailer.transform(html_content)
        # headers = {'Reply-To': '*****@*****.**'}
        headers = {}
        # charset = 'utf-8'
        if options['attach-images']:
            images = [f for f in self.mail_images if isfile(join(image_path, f))]
        else:
            images = ()

        if not testing:
            with open('subscriptions.txt') as file:
                subscriptions = file.readlines()
                for subscription in subscriptions:
                    self.send_mail(subject, headers, from_email, (subscription.rstrip(), ),
                                   text_content, mail_content, image_path, images)
                    sleep(10)
        elif '@' in args[1]:
            self.send_mail(subject, headers, from_email, (args[1], ), text_content, mail_content, image_path, images)
        else:
            with open(args[1]) as file:
                subscriptions = file.readlines()
                for subscription in subscriptions:
                    self.send_mail(subject, headers, from_email, (subscription.rstrip(), ),
                                   text_content, mail_content, image_path, images)
                    sleep(10)