Archive for January, 2008

Python GMail SMTP Example

(Note: Please see my latest posts at my new blog!)

I need to be able to send an email from my python script, and I wanted to be able to use my GMail for the outgoing SMTP server. It becomes a little tricky because the GMail servers require authentication. I searched around and found some good examples on the Internet and then fine tuned them a bit.

import os
import smtplib
import mimetypes
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.MIMEAudio import MIMEAudio
from email.MIMEImage import MIMEImage
from email.Encoders import encode_base64

def sendMail(subject, text, *attachmentFilePaths):
  gmailUser = ‘’
  gmailPassword = ‘bogus!’
  recipient = ‘’

  msg = MIMEMultipart()
  msg[‘From’] = gmailUser
  msg[‘To’] = recipient
  msg[‘Subject’] = subject

  for attachmentFilePath in attachmentFilePaths:

  mailServer = smtplib.SMTP(‘’, 587)
  mailServer.login(gmailUser, gmailPassword)
  mailServer.sendmail(gmailUser, recipient, msg.as_string())

  print(‘Sent email to %s’ % recipient)

def getAttachment(attachmentFilePath):
  contentType, encoding = mimetypes.guess_type(attachmentFilePath)

  if contentType is None or encoding is not None:
    contentType = ‘application/octet-stream’

  mainType, subType = contentType.split(‘/’, 1)
  file = open(attachmentFilePath, ‘rb’)

  if mainType == ‘text’:
    attachment = MIMEText(
  elif mainType == ‘message’:
    attachment = email.message_from_file(file)
  elif mainType == ‘image’:
    attachment = MIMEImage(,_subType=subType)
  elif mainType == ‘audio’:
    attachment = MIMEAudio(,_subType=subType)
    attachment = MIMEBase(mainType, subType)


  attachment.add_header(‘Content-Disposition’, ‘attachment’,   filename=os.path.basename(attachmentFilePath))
  return attachment

Derived from: and

January 4, 2008 at 10:11 pm 36 comments