python send email with attachment

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()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值