Sending HTML email using Python Sending HTML email using Python python python

Sending HTML email using Python


From Python v2.7.14 documentation - 18.1.11. email: Examples:

Here’s an example of how to create an HTML message with an alternative plain text version:

#! /usr/bin/pythonimport smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMEText# me == my email address# you == recipient's email addressme = "my@email.com"you = "your@email.com"# Create message container - the correct MIME type is multipart/alternative.msg = MIMEMultipart('alternative')msg['Subject'] = "Link"msg['From'] = memsg['To'] = you# Create the body of the message (a plain-text and an HTML version).text = "Hi!\nHow are you?\nHere is the link you wanted:\nhttp://www.python.org"html = """\<html>  <head></head>  <body>    <p>Hi!<br>       How are you?<br>       Here is the <a href="http://www.python.org">link</a> you wanted.    </p>  </body></html>"""# Record the MIME types of both parts - text/plain and text/html.part1 = MIMEText(text, 'plain')part2 = MIMEText(html, 'html')# Attach parts into message container.# According to RFC 2046, the last part of a multipart message, in this case# the HTML message, is best and preferred.msg.attach(part1)msg.attach(part2)# Send the message via local SMTP server.s = smtplib.SMTP('localhost')# sendmail function takes 3 arguments: sender's address, recipient's address# and message to send - here it is sent as one string.s.sendmail(me, you, msg.as_string())s.quit()


You might try using my mailer module.

from mailer import Mailerfrom mailer import Messagemessage = Message(From="me@example.com",                  To="you@example.com")message.Subject = "An HTML Email"message.Html = """<p>Hi!<br>   How are you?<br>   Here is the <a href="http://www.python.org">link</a> you wanted.</p>"""sender = Mailer('smtp.example.com')sender.send(message)


Here is a Gmail implementation of the accepted answer:

import smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMEText# me == my email address# you == recipient's email addressme = "my@email.com"you = "your@email.com"# Create message container - the correct MIME type is multipart/alternative.msg = MIMEMultipart('alternative')msg['Subject'] = "Link"msg['From'] = memsg['To'] = you# Create the body of the message (a plain-text and an HTML version).text = "Hi!\nHow are you?\nHere is the link you wanted:\nhttp://www.python.org"html = """\<html>  <head></head>  <body>    <p>Hi!<br>       How are you?<br>       Here is the <a href="http://www.python.org">link</a> you wanted.    </p>  </body></html>"""# Record the MIME types of both parts - text/plain and text/html.part1 = MIMEText(text, 'plain')part2 = MIMEText(html, 'html')# Attach parts into message container.# According to RFC 2046, the last part of a multipart message, in this case# the HTML message, is best and preferred.msg.attach(part1)msg.attach(part2)# Send the message via local SMTP server.mail = smtplib.SMTP('smtp.gmail.com', 587)mail.ehlo()mail.starttls()mail.login('userName', 'password')mail.sendmail(me, you, msg.as_string())mail.quit()