在Python中发送邮件,消息缺失
我正在删除一些超过30天的文件夹,并想通过Gmail给自己发一封邮件,列出所有被删除的文件夹。
现在文件夹删除得很顺利,但邮件里的内容和主题都是空的。我漏掉了什么呢?
import os
import time
import shutil
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import encoders
sender = "my_email@gmail.com"
receivers = ["my_email@gmail.com"]
username = 'my_email'
password = 'passwd'
numdays = 86400*30
now = time.time()
directory=os.path.join("/home","/Downloads/trial/")
for r,d,f in os.walk(directory):
for dir in d:
timestamp = os.path.getmtime(os.path.join(r,dir))
if now-numdays > timestamp:
try:
print "removing ",os.path.join(r,dir)
shutil.rmtree(os.path.join(r,dir))
except Exception,e:
print e
pass
else:
print "Deleted folders are: %s" % os.path.join(r,dir)
msg = MIMEMultipart()
msg['To'] = 'my_email@gmail.com'
subject = "Deleted Folders : %s" % os.path.join(r,dir)
msg['Subject'] = subject
try:
mailserver = smtplib.SMTP("smtp.gmail.com", 587)
mailserver.ehlo()
mailserver.starttls()
mailserver.ehlo()
mailserver.login(sender, password)
mailserver.sendmail(sender, to, msg.as_string())
mailserver.close()
print "Successfully Sent email"
except smtplib.SMTPException:
print"Error: Unable to send email"
我收到了主题为“已删除文件夹:/home/Downloads/trial/4/4”的邮件。
我的目标是让邮件里有一段内容,列出所有被删除的文件夹。我在标准输出中看到了我想要的结果,也就是:
removing /home/Downloads/trial/1
Deleted folders are: /home/Downloads/trial/1
removing /home/Downloads/trial/2
Deleted folders are: /home/Downloads/trial/2
removing /home/Downloads/trial/3
Deleted folders are: /home/Downloads/trial/3
1 个回答
1
试试这个:
deleted_folders = []
for r,d,f in os.walk(directory):
for dir in d:
timestamp = os.path.getmtime(os.path.join(r,dir))
if now-numdays > timestamp:
try:
shutil.rmtree(os.path.join(r,dir))
deleted_folders.append("Deleted folders are: %s" %
os.path.join(r,dir))
# Bad, it's almost never appropriate to catch all Exceptions
# In this case, OSError seems better
except Exception,e:
pass
body = MIMEText("\n".join(deleted_folders), "plain")
msg.attach(body)