75 lines
1.9 KiB
Python
Executable File
75 lines
1.9 KiB
Python
Executable File
#! /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 = """\
|
|
<html>
|
|
<body>
|
|
<p>Tou're just one click away from SuperBuzz bliss!<br />
|
|
Click this confirmation link:<br />
|
|
<a href="https://media.giphy.com/media/9g8PH1MbwTy4o/giphy.gif">Confirm SuperBuzz</a>
|
|
</p>
|
|
</body>
|
|
</html>
|
|
"""
|
|
|
|
# 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)
|