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
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)
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')
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')
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])
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])
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])
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, [])
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))