Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

add excel file attachment when sending python email

Tags:

How do i add a document attachment when sending an email with python ? i get the email to send (please ignore: i am looping the email to send every 5 seconds, only for testing purposes, i want it to send every 30 min, just have to change 5 to 1800)

here is my code so far. how do i attach a document from my computer?

#!/usr/bin/python  import time import smtplib  while True:     TO = '[email protected]'     SUBJECT = 'Python Email'     TEXT = 'Here is the message'      gmail_sender = '[email protected]'     gmail_passwd = 'xxxx'      server = smtplib.SMTP('smtp.gmail.com',587)     server.ehlo()     server.starttls()     server.ehlo()     server.login(gmail_sender, gmail_passwd)     BODY = '\n'.join([         'To: %s' % TO,         'From: %s' % gmail_sender,         'Subject:%s' % SUBJECT,         '',         TEXT          ])      try:         server.sendmail(gmail_sender,[TO], BODY)         print 'email sent'     except:         print 'error sending mail'      time.sleep(5)  server.quit() 
like image 320
soccerplayer Avatar asked Aug 17 '14 03:08

soccerplayer


People also ask

Can Python send an email with attachment?

Use Python's built-in smtplib library to send basic emails. Send emails with HTML content and attachments using the email package.


1 Answers

This is the code that worked for me- to send an email with an attachment in python

#!/usr/bin/python import smtplib,ssl from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email.mime.text import MIMEText from email.utils import formatdate from email import encoders  def send_mail(send_from,send_to,subject,text,files,server,port,username='',password='',isTls=True):     msg = MIMEMultipart()     msg['From'] = send_from     msg['To'] = send_to     msg['Date'] = formatdate(localtime = True)     msg['Subject'] = subject     msg.attach(MIMEText(text))      part = MIMEBase('application', "octet-stream")     part.set_payload(open("WorkBook3.xlsx", "rb").read())     encoders.encode_base64(part)     part.add_header('Content-Disposition', 'attachment; filename="WorkBook3.xlsx"')     msg.attach(part)      #context = ssl.SSLContext(ssl.PROTOCOL_SSLv3)     #SSL connection only working on Python 3+     smtp = smtplib.SMTP(server, port)     if isTls:         smtp.starttls()     smtp.login(username,password)     smtp.sendmail(send_from, send_to, msg.as_string())     smtp.quit() 
like image 69
soccerplayer Avatar answered Sep 21 '22 14:09

soccerplayer