python smtp附加功能

时间:2017-03-28 08:47:19

标签: python python-2.7 boto

我试图使用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()

1 个答案:

答案 0 :(得分:0)

缺少file.close()。这是典型的python反模式问题。始终使用build.gradle确保文件正确关闭。

10.2.1