python程序以MMDDYYY格式重命名文件并发送带有附件的电子邮件

2024-04-20 15:56:50 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是发送带有附件的电子邮件的程序:

我想将文件student.xlsx重命名为student_MMDDYYYY.xlsx,并用重命名的文件发送电子邮件,电子邮件发送后,我想删除该文件。我怎么能做到呢?在

这是我的代码:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
fromaddr = "MYEMAILID"
toaddr = "TOADDRESS" 
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "Please find the attachment"
body = "HI" 
msg.attach(MIMEText(body, 'plain')) 
filename = "student.xlsx"
dt = str(datetime.datetime.now())
attachment = open("C:\\Users\\prashanth\\Desktop\\student.xlsx", "rb")
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename) 
msg.attach(part) 
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(fromaddr, "Password")
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()

Tags: 文件textfromimportattachmentserveremailmsg
1条回答
网友
1楼 · 发布于 2024-04-20 15:56:50

您可以使用os.rename()重命名文件,使用os.remove()删除文件。要获得所需的日期格式,可以使用strftime(),例如:

import os
from datetime import datetime
date_now = datetime.now().strftime('%m%d%Y')
file_one = "C:\\Users\\prashanth\\Desktop\\student.xlsx"
file_two = 'C:\\Users\\prashanth\\Desktop\\student_{}.xlsx'.format(date_now)
os.rename(file_one, file_two)
# send your email and attach the file
# and once you're done:
os.remove(file_two)

编辑:

在重命名或删除文件之前,您需要close()文件,或者最好使用with-statement打开文件并在完成后自动关闭,例如:

^{pr2}$

或者

with open(file, "rb") as attachment:
    part = MIMEBase('application', 'octet-stream')
    part.set_payload((attachment).read())

相关问题 更多 >