摘要

Linux环境下, 后台任务运行结束后, 往往需要将运行结果传递出去. 这就需要在邮件中添加附件, 或者直接在邮件正文中展示.
可以使用python脚本实现此功能.
未解决: 发送附件时, 不管附件的源格式是什么, 接收到的邮件中的附件文本内容都是UTF-8编码, 但是excel不支持UTF-8格式的文本. 这就导致, 附件后缀是.xls.csv时, 预览附件会显示乱码, 也无法用excel直接打开, 只能使用文本阅读器打开.

代码实现

代码主要借鉴了: 知乎专栏文章. 但原文没有完整的设置群发, 于是自己做了补充.
代码很简单, 想要发出漂亮的邮件, 主要还是需要把内容转为html, 这样就可以直接在邮件正文中展示出来.

# -*- coding:utf-8 -*-import os
# 执行任务
os.system('bash run_command.sh')import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart##### 设置服务器所需信息 #####
# 腾讯企业邮箱服务器地址
mail_host = 'smtp.exmail.qq.com'
# 用户名(一般用户名也就是邮箱名)
mail_user = 'abc123@qq.com'
# 密码(部分邮箱为授权码)
mail_pass = '123456'
#邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
receivers = ['name1@qq.com, name2@qq.com, name3@qq.com']##### 设置email信息 #####
#添加一个MIMEmultipart类,处理正文及附件
message = MIMEMultipart()
message['From'] = formataddr(["data", mail_user])
message['Subject'] = '测试发送邮件'
##### 设置群发 #####
if len(receivers)>1:message['To'] = ','.join(receivers) #群发邮件
else:message['To'] = receivers[0]##### 设置邮件正文信息 #####
# part1 = MIMEText('这段正文是平平无奇的一段文字' , 'plain', 'utf-8')
# 推荐使用html格式的正文, 会炫酷很多
part1 = MIMEText(open('test.html','r').read(),'html','utf-8')#添加一个文本附件
part2 = MIMEText(open('everyday.txt','r').read(), 'plain','utf-8')
#附件设置内容类型,一般设置为二进制流
part2['Content-Type'] = 'application/octet-stream'
#设置附件头,添加文件名
part2["Content-Disposition"] = 'attachment; filename="howmanydays.txt"'#将内容附加到邮件主体中
message.attach(part1)
message.attach(part2)#登录并发送
try:smtpObj = smtplib.SMTP()smtpObj.connect(mail_host,25)smtpObj.login(mail_user,mail_pass)smtpObj.sendmail(mail_user,receivers,message.as_string())print('success')smtpObj.quit()
except smtplib.SMTPException as e:print('error',e)# 该方法用于改变文件编码, 可以用于测试
def transfer_utf8_to_gb2312(file_name):f=open(file_name)s=f.read()f.close()u=s.decode("utf-8")s=u.encode("gb2312")f=open(file_name,"w");f.write(s)

用python发邮件(带附件)相关推荐

  1. python 发邮件-带附件-文本-html

    #!/usr/bin/python # encoding=utf-8 # Filename: send_email.py from email.mime.image import MIMEImage ...

  2. python 发邮件 带附件

    环境 python==3.7 代码 from io import BytesIO import smtplib import email from email.mime.application imp ...

  3. 1.3windows命令行下使用blat发邮件带附件

    windows命令行bat批处理脚本的应用之blat程序自动发邮件  1.3windows命令行下使用blat发邮件带附件  __游旗丶引莫(孙忠)  发邮件脚本模板  rem  ----邮件内容-- ...

  4. Scala发邮件(带附件,无论是本地文件和hdfs文件或df或rdd)

    @羲凡--只为了更好的活着 Scala发邮件(带附件,无论是本地文件和hdfs文件或df或rdd) 在有些spark任务执行完后需要通知我们该任务已经执行结束,发邮件到某个邮箱是最直接的方式.那如何用 ...

  5. python发邮件添加附件(十)

    #一.python发邮件添加附件 这是一个神奇的工具,要好好学哦 !!! import smtplib# 1.发送人账号 sendAddress = 'xxx@qq.com' # 2.发送人授权码 p ...

  6. python自动化发邮件(带附件及正文显示图片)

    一.python自动发送邮件-(附件及正文图片) 带附件邮件(1) 前言:一般我们发送邮件,整体的逻辑是这样的,先登录邮箱,发件人,收件人,主题,附件,内容 尝试自动发邮件,并且携带附件,代码如下 f ...

  7. Java Mail---SMTP协议-Java发邮件(带附件)演示过程

    转载请注明出处: http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] JavaMail-API简介: 邮件客户端的主要任务是向邮件服务器发送邮件,以及接 ...

  8. python接口自动化-发邮件带附件

    自动化脚本运行完成以后需要发邮件给相关负责人,那么怎样发送邮件呢,邮件里边又是怎么带附件的呢,今天我们就来了解一下. 1.发送邮件不带附件 首先创建一个py文件,名称为send_main.py,文件内 ...

  9. Java 发邮件-带附件且正文html格式

    入职新公司不久,接到一个给用户发邮件的需求,有两点需要说明的:1)正文需要格式化:2)需要带附件. 大概了解了一下需求,我马上开始思考,现有项目中是否有类似的接口可以支持,如果可以支持,那我就不用再开 ...

最新文章

  1. 使用 Matplotlib 这么久,竟不知道数据可以动起来
  2. 李彦宏:正在发生的智能经济 4 大变革 | 赠书
  3. MPEG2-TS的小结 [1]
  4. VC++图像存取总结
  5. 自定义Word样式模板,设置为默认模板
  6. 1130 - Host ‘win7' is not allowed to connect to this mysql server
  7. android代码导入有错误,android新项目导入后进行编译出现cmake错误
  8. 探讨继承与实现(二)
  9. PAT乙级(1036 跟奥巴马一起编程)
  10. 第一次写博,好激动啊!
  11. 简单python脚本实例-简单了解python调用其他脚本方法实例
  12. [2016百度之星 - 初赛(Astar Round2A)]Snacks
  13. wd ex2 ultra mysql_西部数据My Cloud EX2网络存储器驱动
  14. 最新基于LBS的毕业设计题目
  15. 【HDU4416】Good Article Good sentence【后缀数组】
  16. python下载所有股票日交易数据
  17. 淘宝订单API获取订单代码说明
  18. C# 网络编程之套接字编程基础知识
  19. 搜索不到投屏设备怎么办_搜不到投屏设备怎么办
  20. 简单高效在线APP原型工具

热门文章

  1. Android-APK瘦身实践
  2. 学习指针后对int main(int argc, char *argv[]),“()“内部参数的详解(初学者不要怕,浅浅学过指针的就可以看懂)
  3. 已知函数fx=sin(wx+φ)_考点13 y=sin(wx+φ)的图像与性质(解析版)
  4. 此计算机上无法找到autocad2017,win7系统安装autocad2017提示“无法定位inf文件ACAD.inf”如何解决...
  5. pandownload使用cookie登录
  6. 已拦截跨源请求:同源策略禁止读取位于...的远程资源。(原因:CORS 请求未能成功)。
  7. 运维之阿里云和本地虚拟机的连接问题
  8. csv和json文件
  9. 什么是裸金属服务器,裸金属服务器适用什么场景?
  10. 如何批量转换文件格式