SUBJECT = "此处是邮件的主题"
EMAIL_FROM = "此处是你发送邮箱的地址@***.com"
SENDER_PASS = "此处是你发送邮箱的密码"
EMAIL_TO = ["此处是你接收邮箱的地址@163.com", "另一个接收邮箱地址", "支持多个邮箱接收,以列表形式存放于此"]
FILE_NAME = "result.xlsx"
FILE_PATH = "/***/result.xlsx" #尽量写成绝对路径,可方便使用crontab进行定时发送任务
SMTP_SERVER = "smtp.datagrand.com" # 我也不清楚这个server是怎么回事,反正我设置成这个是可以使用的
msg = MIMEMultipart()
msg['From'] = EMAIL_FROM
msg['To'] = COMMASPACE.join(EMAIL_TO)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = SUBJECT
msg.attach(MIMEText('query log 统计数据 %s,请查看附件' % FILE_NAME, 'plain', 'utf-8')) # 这里是邮件的内容
with open(FILE_PATH, "rb") as fil:
part = MIMEApplication(
fil.read(),
Name=basename(FILE_PATH)
)
# After the file is closed
part['Content-Disposition'] = 'attachment; filename="%s"' % basename(FILE_PATH)
msg.attach(part) # 此处以附件的形式发送excel文件
smtp = smtplib.SMTP(SMTP_SERVER, 25) # 我在mac pro上运行此代码,端口为25时可以成功发送邮件,但是在服务器上则一直超时,把端口改为587就可以正常发送了
smtp.login(EMAIL_FROM, SENDER_PASS)
smtp.sendmail(EMAIL_FROM, EMAIL_TO, msg.as_string())
smtp.close()