#! /usr/bin/env python3 from bottle import get, post, run, template import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart def craft_email(from_address, to_address, subject): return f"""\ From: {from_address} To: {to_address} Subject: {subject} You're just one click away from SuperBuzz bliss! Click this confirmation link: [confirmation link]. """ def craft_fancy_email(from_address, to_address, subject): message = MIMEMultipart("alternative") message["Subject"] = "multipart test" message["From"] = from_address message["To"] = to_address # Create the plain-text and HTML version of your message text = """\ You're just one click away from SuperBuzz bliss! Click this confirmation link: [confirmation link].""" html = """\

Tou're just one click away from SuperBuzz bliss!
Click this confirmation link:
Confirm SuperBuzz

""" # Turn these into plain/html MIMEText objects part1 = MIMEText(text, "plain") part2 = MIMEText(html, "html") # Add HTML/plain-text parts to MIMEMultipart message # The email client will try to render the last part first message.attach(part1) message.attach(part2) return message.as_string() def send_confirm_email(): print('Sending confirmation email') host = 'localhost' port = 1025 server = smtplib.SMTP(host, port) FROM = "welcome@superbuzz.com" TO = "you@example.com" #MSG = craft_email(FROM, TO, 'Welcome to SuperBuzz!') MSG = craft_fancy_email(FROM, TO, 'Welcome to SuperBuzz!') server.sendmail(FROM, TO, MSG) server.quit() print('Confimration email sent.') @get('/') def home(): return template('home') @post('/go') def go(): send_confirm_email() return template('go') run(host='localhost', port=8080, debug=True)