def test_missing_values(self): message = Message() self.assertRaises(ValueError, str, message) message.author = "*****@*****.**" self.assertRaises(ValueError, str, message) message.subject = "Attn: Bob Dole" self.assertRaises(ValueError, str, message) message.to = "*****@*****.**" self.assertRaises(ValueError, str, message) message.plain = "Testing!" try: str(message) except ValueError: self.fail("Message should be valid.")
def test_missing_values(self): message = Message() with pytest.raises(ValueError): unicode(message) message.author = "*****@*****.**" with pytest.raises(ValueError): unicode(message) message.subject = "Attn: Bob Dole" with pytest.raises(ValueError): unicode(message) message.to = "*****@*****.**" with pytest.raises(ValueError): unicode(message) message.plain = "Testing!" try: unicode(message) except ValueError: assert False, "Message should be valid."
def buildnewsletter(book_list): """Routine to send an HTML newsletter """ logger.info('Pulling together the newsletter.') __tmp__file__loc = "tmpicon.jpg" mailer = Mailer( dict(transport=dict(use='smtp', host=config.settings['SMTPSettings']['host'], port=config.settings['SMTPSettings']['port'], username=config.settings['SMTPSettings']['user'], password=config.settings['SMTPSettings'] ['password'], tls=config.settings['SMTPSettings']['startttls']))) try: # Perform jinja message_template_file = config.settings['TEMPLATE_FILE'] message_banner_img = os.path.join( config.settings['TEMPLATE_DIR'], config.settings['TEMPLATE_BANNER_IMG']) message_unknown_img = os.path.join( config.settings['TEMPLATE_DIR'], config.settings['TEMPLATE_NOCOVER_IMG']) message_intropara_file = os.path.join( config.settings['TEMPLATE_DIR'], config.settings['TEMPLATE_INTROPARA']) cd = config.settings['TEMPLATE_DIR'] logger.info(cd) jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(cd)) try: with open(message_intropara_file, 'r') as introparafile: message_intropara = introparafile.read().replace('\n', '') logger.info('Loaded newsletter intro paragraph.') except: message_intropara = "<p>New books added.</p>" logger.exception("Couldn't load intro paragraph.") logger.warn('Loading default newsletter intro paragraph.') messagebody = jinja_env.get_template(message_template_file).render( book_list=book_list, intropara_blk=message_intropara) mailer.start() message = Message(author=config.settings['SMTPSettings']['user']) message.subject = config.settings['SMTPSettings']['subject'] message.plain = "This is only exciting if you use an HTML capable email client. Please disregard." message.rich = messagebody message.embed(message_banner_img) flg_unknown_embedded = False for book in book_list: if book["book_cover_id"] != "Unknown.png": book['cover_thumbnail'].save(__tmp__file__loc, "JPEG") message.embed((book["book_cover_id"]), open(__tmp__file__loc)) elif book[ "book_cover_id"] == "Unknown.png" and not flg_unknown_embedded: message.embed(message_unknown_img) flg_unknown_embedded = True for winner in db_operations.get_dl_list(): message.to = winner if config.settings['DevMode']: mailer.send(message) logger.info('DevMode - Sending email to %s', winner) else: mailer.send(message) logger.info('sending email to %s', winner) except: logger.exception('Error sending email.') mailer.stop() logger.info('Completed newsletter routine.') return
logging.basicConfig(level=logging.INFO) configuration = { "manager": "immediate", # futures "manager.workers": 5, "transport": "smtp", "transport.host": "", "transport.tls": "ssl", # None=='', required, optional "transport.port": 465, # 25, 465 = SSL "transport.username": "", "transport.password": "", "transport.max_messages_per_connection": 5, "transport.debug": False, } if __name__ == "__main__": mail = Delivery(configuration) mail.start() message = Message() message.author = [("Alice Bevan-McGregor", "*****@*****.**")] message.to = [("Your Name Here", "*****@*****.**")] message.subject = "This is a test message." message.plain = "Testing!" mail.send(message) mail.stop()