我试图使用python smtplib模块使用下面的代码生成输出并将其发送到电子邮件,但它无法正常工作。邮件功能正常,但收到空文件。有人可以指导我在这段代码中出错了吗
import boto.iam
import csv
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email import Encoders
# Opening CSV file with write permission
file = open ('report.csv', 'wb')
writer = csv.writer(file)
writer.writerow(['UserName', 'arn', 'password-last-used'])
conn = boto.iam.connection.IAMConnection()
users = conn.get_all_users()['list_users_response']['list_users_result']['users']
for i in users:
writer.writerow([i.user_name, i.arn, i.get("password_last_used", 'Never Used')])
def send_report():
server = smtplib.SMTP("localhost", 25)
SUBJECT = "AWS Report"
EMAIL_FROM = "localhost"
EMAIL_TO = ['xxxxx@gmail.com']
msg = MIMEMultipart()
msg['Subject'] = SUBJECT
msg['From'] = EMAIL_FROM
msg['To'] = ', '.join(EMAIL_TO)
part = MIMEBase('application', "octet-stream")
part.set_payload(open("report.csv", "rb").read())
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="report.csv"')
msg.attach(part)
server.sendmail(EMAIL_FROM, EMAIL_TO, msg.as_string())
send_report()
答案 0 :(得分:0)
缺少file.close()。这是典型的python反模式问题。始终使用build.gradle
确保文件正确关闭。
10.2.1