Adapted from a Stack Overflow question. Generates a simple EML file.
# Adapted from:
# Post: http://stackoverflow.com/q/23837498/155167
# Accepted answer: http://stackoverflow.com/a/23837627/155167
# ----------------------------------------------------------------
from email import generator
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
class EmlFile(object):
subject = ''
body = ''
def __init__(self, sender):
object.__init__(self)
self._sender = sender
self._recipients = list()
@property
def sender(self):
return self._sender
def addRecipient(self, address, name=None):
if name:
self._recipients.append('%s <%s>' % (name, address))
else:
self._recipients.append(address)
def getRecipients(self):
return ', '.join(self._recipients)
def getMessage(self):
message = MIMEMultipart('alternative')
message['From'] = self.sender
message['To'] = self.getRecipients()
message['Subject'] = self.subject
part = MIMEText(self.body, 'html')
message.attach(part)
return message
def write(self, path):
with open(path, 'w') as f:
gen = generator.Generator(f)
gen.flatten(self.getMessage())
if __name__ == '__main__':
import os
cwd = os.getcwd()
path = os.path.join(cwd, 'message.eml')
eml = EmlFile('alice@example.com')
eml.addRecipient('bob@example.com')
eml.subject = 'Test'
eml.body = '<html><head></head><body><p>Hello, World!</p></body></html>'
eml.write(path)