def mail(app_conf, project_root='.'): if not app_conf: return smtp_conf = { k[5:]: v for k, v in app_conf.__dict__.items() if k.startswith('smtp_') } if smtp_conf: smtp_conf.setdefault('timeout', app_conf.socket_timeout) mailer = SMTPMailer(**smtp_conf) if smtp_conf else DummyMailer() emails = {} emails_dir = project_root + '/emails/' i = len(emails_dir) for spt in find_files(emails_dir, '*.spt'): base_name = spt[i:-4] emails[base_name] = compile_email_spt(spt) def log_email(message): message = dict(message) html, text = message.pop('html'), message.pop('text') print('\n', ' ', '=' * 26, 'BEGIN EMAIL', '=' * 26) print(json.dumps(message)) print('[---] text/html') print(html) print('[---] text/plain') print(text) print(' ', '=' * 27, 'END EMAIL', '=' * 27) log_email = log_email if app_conf.log_emails else lambda *a, **kw: None return {'emails': emails, 'log_email': log_email, 'mailer': mailer}
def test_dummy_mailer(): mailer = DummyMailer() email1, email2, email3, email4 = make_emails() assert mailer.send_messages(email1) == 1 assert mailer.send_messages(email2, email3, email4) == 3