예제 #1
0
파일: mail.py 프로젝트: rangsutu88/Tktr
 def send_email(self, user_id, subject, content, pdf_attachment=None):
     if user_id not in self.request.root.users:
         logging.error("When sending email, user ID %s does not exist" % user_id)
         return False
     user = self.request.root.users[user_id]
     if user.profile == None or user.profile.email == None:
         logging.error("When sending email, user ID %s does not have a profile or email address" % user_id)
         return False
     try:
         # Compose message
         send_name = self.request.registry._settings["sender_name"]
         send_email = self.request.registry._settings["sender_email"]
         message = Message(
             author  = '%s <%s>' % (send_name, send_email),
             subject = "%s - %s" % (PROP_KEYS.getProperty(self.request, PROP_KEYS.EVENT_NAME), subject),
             to      = user.profile.email,
             rich    = content["rich"],
             plain   = content["plain"]
         )
         # Attach any available PDFs
         if pdf_attachment != None:
             message.attach("tickets.pdf", data=pdf_attachment, maintype="application", subtype="pdf")
         # Dispatch Message
         get_mailer(self.request).send(message)
         logging.info("Sent email with subject '%s' to email %s" % (subject, user.profile.email))
         return True
     except socket.error:
         logging.exception("Socket error occurred when sending email to user %s" % user_id)
         return False
     except Exception:
         logging.exception("Email send exception occurred to user %s" % user_id)
         return False
예제 #2
0
파일: mail.py 프로젝트: rangsutu88/Tktr
 def send_bulk_email(self, user_ids, subject, content):
     emails = []
     for user_id in user_ids:
         if not user_id in self.request.root.users: continue
         user = self.request.root.users[user_id]
         if user.profile == None or user.profile.email == None: continue
         emails.append(user.email)
     if len(emails) <= 0: return False
     try:
         # Compose message
         send_name = self.request.registry._settings["sender_name"]
         send_email = self.request.registry._settings["sender_email"]
         message = Message(
             author  = '%s <%s>' % (send_name, send_email),
             subject = "%s - %s" % (PROP_KEYS.getProperty(self.request, PROP_KEYS.EVENT_NAME), subject),
             bcc     = emails,
             rich    = content["rich"],
             plain   = content["plain"]
         )
         # Dispatch Message
         get_mailer(self.request).send(message)
         logging.info("Sent email with subject '%s' to emails %s" % (subject, emails))
         return True
     except socket.error:
         logging.exception("Socket error occurred when sending email to user %s" % user_id)
         return False
     except Exception:
         logging.exception("Email send exception occurred to user %s" % user_id)
         return False
 def test_digit_option(self):
     from pyramid_marrowmailer import get_mailer
     self.config.registry.settings['mail.transport.use'] = 'smtp'
     self.config.registry.settings['mail.transport.port.int'] = '100'
     self.config.include('pyramid_marrowmailer')
     self.assertEqual(get_mailer(self.request).config['transport.port'],
                      100)
예제 #4
0
 def test_digit_option(self):
     from pyramid_marrowmailer import get_mailer
     self.config.registry.settings['mail.transport.use'] = 'smtp'
     self.config.registry.settings['mail.transport.port.int'] = '100'
     self.config.include('pyramid_marrowmailer')
     self.assertEqual(
         get_mailer(self.request).config['transport.port'], 100)
 def test_mailer_config_prefix(self):
     from pyramid_marrowmailer import get_mailer
     settings = self.config.registry.settings
     settings['pyramid_marrowmailer.prefix'] = 'foobar.'
     settings['foobar.transport.use'] = 'smtp'
     self.config.include('pyramid_marrowmailer')
     self.assertEqual(get_mailer(self.request).config['transport.use'],
                      'smtp')
예제 #6
0
 def test_mailer_config_prefix(self):
     from pyramid_marrowmailer import get_mailer
     settings = self.config.registry.settings
     settings['pyramid_marrowmailer.prefix'] = 'foobar.'
     settings['foobar.transport.use'] = 'smtp'
     self.config.include('pyramid_marrowmailer')
     self.assertEqual(
         get_mailer(self.request).config['transport.use'], 'smtp')
예제 #7
0
    def test_send(self):
        self.configure()
        from pyramid_marrowmailer import get_mailer
        mailer = get_mailer(self.request)

	message = mailer.new()
	message.subject = "foobar"
	message.to = "*****@*****.**"
	message.plain = "hi"
	message.send()
	self.assertEqual(self.handler.info, [])

        self.assertTrue('DELIVER' in self.handler.info[1])
예제 #8
0
    def test_send(self):
        self.configure()
        from pyramid_marrowmailer import get_mailer
        mailer = get_mailer(self.request)

        message = mailer.new()
        message.subject = "foobar"
        message.to = "*****@*****.**"
        message.plain = "hi"
        self.assertEqual(self.handler.info, [])
        message.send()

        self.assertIn('DELIVER', self.handler.info[1])
예제 #9
0
    def test_fill_missing_fields(self):
        self.configure()
        from pyramid_marrowmailer import get_mailer
        mailer = get_mailer(self.request)

        import transaction
        with transaction.manager:
            message = mailer.new(subject='foobar', to='*****@*****.**', plain='hi')
            message.send()
            self.assertEqual(self.handler.info, [])

        self.assertEqual(message.author, ["*****@*****.**"])
        self.assertEqual(message.sender, "*****@*****.**")
        self.assertTrue('DELIVER' in self.handler.info[1])
예제 #10
0
    def test_send(self):
        self.configure()
        from pyramid_marrowmailer import get_mailer, TransactionMailer
        mailer = get_mailer(self.request)
        self.assertIsInstance(mailer, TransactionMailer)

        import transaction
        with transaction.manager:
            message = mailer.new()
            message.subject = "foobar"
            message.to = "*****@*****.**"
            message.plain = "hi"
            message.send()
            self.assertEqual(self.handler.info, [])

        self.assertIn('DELIVER', self.handler.info[1])
    def test_send_abort(self):
        self.configure()
        from pyramid_marrowmailer import get_mailer
        mailer = get_mailer(self.request)

        import transaction
        try:
            with transaction.manager:
                message = mailer.new()
                message.subject = "foobar2"
                message.to = "*****@*****.**"
                message.plain = "hi"
                message.send()
                raise ValueError
        except ValueError:
            pass

        self.assertEqual(self.handler.info, [])
예제 #12
0
    def test_send_abort(self):
        self.configure()
        from pyramid_marrowmailer import get_mailer, TransactionMailer
        mailer = get_mailer(self.request)
        self.assertIsInstance(mailer, TransactionMailer)

        import transaction
        try:
            with transaction.manager:
                message = mailer.new()
                message.subject = "foobar2"
                message.to = "*****@*****.**"
                message.plain = "hi"
                message.send()
                raise ValueError
        except ValueError:
            pass

        self.assertEqual(self.handler.info, [])
 def test_boolean_option(self):
     from pyramid_marrowmailer import get_mailer
     self.config.registry.settings['mail.transport.use'] = 'smtp'
     self.config.registry.settings['mail.transport.debug.on'] = 'true'
     self.config.include('pyramid_marrowmailer')
     self.assertTrue(get_mailer(self.request).config['transport.debug'])
 def test_it(self):
     from pyramid_marrowmailer import get_mailer, TransactionMailer
     self.config.registry.settings['mail.transport.use'] = 'mock'
     self.config.include('pyramid_marrowmailer')
     mailer = get_mailer(self.request)
     self.assertTrue(isinstance(mailer, TransactionMailer))
예제 #15
0
 def test_boolean_option(self):
     from pyramid_marrowmailer import get_mailer
     self.config.registry.settings['mail.transport.use'] = 'smtp'
     self.config.registry.settings['mail.transport.debug.on'] = 'true'
     self.config.include('pyramid_marrowmailer')
     self.assertTrue(get_mailer(self.request).config['transport.debug'])
예제 #16
0
 def test_it(self):
     from pyramid_marrowmailer import get_mailer, TransactionMailer
     self.config.registry.settings['mail.transport.use'] = 'mock'
     self.config.include('pyramid_marrowmailer')
     mailer = get_mailer(self.request)
     self.assertTrue(isinstance(mailer, TransactionMailer))