Files
mailhog-demo/app.py
Benjamin Sigonneau 446fedc4a6 Add html email
2022-05-13 09:29:43 +02:00

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)