Posted By

oznek on 04/16/10


Tagged

mail python send smtp gmail


Versions (?)

Who likes this?

2 people have marked this snippet as a favorite

gartenstuhl
Priestd09


Python GMail SMTP Example


 / Published in: Python
 

URL: http://codecomments.wordpress.com/2008/01/04/python-gmail-smtp-example/

  1. import os
  2. import smtplib
  3. import mimetypes
  4. from email.MIMEMultipart import MIMEMultipart
  5. from email.MIMEBase import MIMEBase
  6. from email.MIMEText import MIMEText
  7. from email.MIMEAudio import MIMEAudio
  8. from email.MIMEImage import MIMEImage
  9. from email.Encoders import encode_base64
  10.  
  11. def sendMail(subject, text, *attachmentFilePaths):
  12. gmailUser = '[email protected]'
  13. gmailPassword = 'bogus!'
  14. recipient = '[email protected]'
  15.  
  16. msg = MIMEMultipart()
  17. msg['From'] = gmailUser
  18. msg['To'] = recipient
  19. msg['Subject'] = subject
  20. msg.attach(MIMEText(text))
  21.  
  22. for attachmentFilePath in attachmentFilePaths:
  23. msg.attach(getAttachment(attachmentFilePath))
  24.  
  25. mailServer = smtplib.SMTP('smtp.gmail.com', 587)
  26. mailServer.ehlo()
  27. mailServer.starttls()
  28. mailServer.ehlo()
  29. mailServer.login(gmailUser, gmailPassword)
  30. mailServer.sendmail(gmailUser, recipient, msg.as_string())
  31. mailServer.close()
  32.  
  33. print('Sent email to %s' % recipient)
  34.  
  35. def getAttachment(attachmentFilePath):
  36. contentType, encoding = mimetypes.guess_type(attachmentFilePath)
  37.  
  38. if contentType is None or encoding is not None:
  39. contentType = 'application/octet-stream'
  40.  
  41. mainType, subType = contentType.split('/', 1)
  42. file = open(attachmentFilePath, 'rb')
  43.  
  44. if mainType == 'text':
  45. attachment = MIMEText(file.read())
  46. elif mainType == 'message':
  47. attachment = email.message_from_file(file)
  48. elif mainType == 'image':
  49. attachment = MIMEImage(file.read(),_subType=subType)
  50. elif mainType == 'audio':
  51. attachment = MIMEAudio(file.read(),_subType=subType)
  52. else:
  53. attachment = MIMEBase(mainType, subType)
  54. attachment.set_payload(file.read())
  55. encode_base64(attachment)
  56.  
  57. file.close()
  58.  
  59. attachment.add_header('Content-Disposition', 'attachment', filename=os.path.basename(attachmentFilePath))
  60. return attachment

Report this snippet  

You need to login to post a comment.