【发布时间】:2015-12-21 22:17:47
【问题描述】:
有一个脚本 test.py,它将生成 2 到 3 个 csv 文件进行 sql 查询。 将生成 CSV 文件并将其保存在与 test.py 相同的路径中。 生成 csv 文件是正确的,但电子邮件附件不起作用 下面是我的代码 sn-p :
import smtplib
import csv
from email.mime.multipart import MIMEMultipart
from email.message import Message
from email.mime.text import MIMEText
with open('record1.csv', 'wb') as f:
fieldnames = ['Name','No audits']
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
for data in query:
writer.writerow({'Name' : data[0], 'No audits': data[1]})
## below code as problem
#Mail format
COMMASPACE = ', '
SERVER = "localhost"
msg = MIMEMultipart()
msg['Subject'] = 'Audit records'
emailfrom = "xyz" // Giving proper outlook mail id
emailto = ['abc'] // // Giving proper outlook mail id lists
msg['From'] = emailfrom
msg['To'] = COMMASPACE.join(emailto)
msg.preamble = 'List of audit records '
csvfiles = ['record1.csv', 'record2.csv']
for csv in csvfiles:
print csv
with open(csv) as fp:
record = MIMEText(fp.read())
msg.attach(record)
print "INFO: "
server = smtplib.SMTP(SERVER)
server.sendmail(emailfrom, emailto, msg.as_string())
server.quit()
脚本运行没有错误,但没有发送电子邮件
【问题讨论】:
-
注释掉附件部分是否会发送邮件?
-
不,如果我注释掉 csv 文件部分并尝试发送,即使它没有发送
-
那么您应该继续将您的测试程序缩减为仍然显示问题的最小程序。这可以防止我们在诸如您标题中提到的“附件”之类的红鲱鱼上浪费时间。
-
您的代码示例中的
query是什么??? -
这是一个 mongodb 查询,类似于 db.audit_records.find() 中的数据:这工作正常,我能够生成带有记录的 csv 文件。但无法将这些 csv 文件作为电子邮件附件发送
标签: python email csv email-attachments