Sending Mail Via Postfix: A perfect Python Example :)

Friday, January 1st, 2010

I have been playing with Postfix for the last couple of days. I have already posted a perfect php class for sending email with attachments in a previous post. The Python example I posted earlier does the job for me but it was not perfect like the php one.

After digging a while, I found a nice way to do the same for python as well. I have just tested the codes and the result is perfectly what I desired :)

Here’s the code:

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders
import os
 
def sendMail(to, fro, subject, text, files=[],server="localhost"):
    assert type(to)==list
    assert type(files)==list
 
 
    msg = MIMEMultipart()
    msg['From'] = fro
    msg['To'] = COMMASPACE.join(to)
    msg['Date'] = formatdate(localtime=True)
    msg['Subject'] = subject
 
    msg.attach( MIMEText(text) )
 
    for file in files:
        part = MIMEBase('application', "octet-stream")
        part.set_payload( open(file,"rb").read() )
        Encoders.encode_base64(part)
        part.add_header('Content-Disposition', 'attachment; filename="%s"'
                       % os.path.basename(file))
        msg.attach(part)
 
    smtp = smtplib.SMTP(server)
    smtp.sendmail(fro, to, msg.as_string() )
    smtp.close()
 
# Example:
sendMail(['maSnun <masnun@gmail.com>'],'phpGeek <masnun@leevio.com>','Hello Python!','Heya buddy! Say hello to Python! :)',['masnun.py','masnun.php'])

2 Responses to “Sending Mail Via Postfix: A perfect Python Example :)”

  1. [...] more:  Sending Mail Via Postfix: A perfect Python Example « maSnun.com By admin | category: python | tags: does-the-job, last-couple, perfect-php, [...]

  2. InvarBrass says:

    This code (or the PHP version) isn’t exactly specific to postfix. All you need is a sendmail compatible mailer daemon installed in the system. All of the popular MTAs (postfix, exim, qmail etc) support the sendmail way of sending mail.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">