#!/usr/bin/env/python
# -*- coding: utf-8 -*-
# @Time : 2018/11/19 9:56
# @Author : ChenAdong
# @Email : aiswell@foxmail.com import smtplib s = smtplib.SMTP("smtp.qq.com", port=25)
tolist = ["xxx@163.com"] # 收件人列表
s.set_debuglevel(1)
msg = """\\
From:apiTestRobot<xxx@qq.com>
To:xxx@163.com # 填写收件邮箱
Subject:test THIS IS A TEST test dfdafdaf
THIS IS A TEST test dfdafdaf
THIS IS A TEST test dfdafdaf
THIS IS A TEST test dfdafdaf
"""
s.login("xxx@qq.com", "xxx")
s.sendmail("xxx@qq.com", "xxx@163.com", msg) # f填写发件邮箱和收件邮箱地址
s.quit()

  注意事项:

    这里的密码是授权码,需要打开QQ邮箱内的对应服务,然后生成授权码(可以当做密码用)

    如图:

效果图:

* 上面是一个入门版本,下面介绍一个高级一点的版本

#!/usr/bin/env/python
# -*- coding: utf-8 -*-
# @Time : 2018/11/19 9:56
# @Email : aiswell@foxmail.com import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
import time def mymail(result):
"""
:param result: str
:return:
"""
s = smtplib.SMTP("smtp.qq.com", port=25)
tolist = ["xxx@163.com", "xxx@xxx.com", ]
s.set_debuglevel(1)
msg = MIMEText(result, "plain", "utf-8")
msg["From"] = formataddr(["xxx", "xxx@qq.com"])
msg["To"] = formataddr(["xxx", "xxxx@163.com"])
_time = time.strftime("%Y-%m-%d", time.localtime())
msg["Subject"] = "%s 接口测试结果" % str(_time)
s.login("xxx@qq.com", "xxx") # 前面是邮箱地址,后面是授权码
s.sendmail("xxx@qq.com", tolist, msg.as_string()) # 注意一定要用as_string方法,不然会报错
s.quit() if __name__ == "__main__":
log_path = "..//log//" + time.strftime("%Y-%m-%d", time.localtime()) + ".txt"
with open(log_path, "r") as result:
r = result.readlines()
str_result = ""
for line in r:
r_tem = "\r\n\t%s" % line
str_result = str_result + r_tem
print mymail(str_result)

  但是在实际应用中,可能需要美观一点,可以发送html格式:

  

with open("./2018-11-21.html", "r") as f:
# content = f.readlines()
content = f.read()

 如上,如果使用注释掉的方法发送的话,会出现乱码;正确的方式是f.read()

然后,msg = MIME.text(content, "html", "utf-8")

sendmail(from_addr, to_addr, msg.as_string())

需要注意的是,还是msg.as_string()

下面是发送的html文件样例:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<table border="1" cellspacing="0" bgcolor="#e6e6fa">
<tr>
<td>时间</td>
<td>序列</td>
<td>用例名</td>
<td>status_code</td>
<td>msg</td>
<td>断言</td>
</tr>
<tr>
<td>555</td>
<td>fdafadf</td>
<td>fdafdafdafdafdafdafda</td>
<td>statffdafdafdafus_code</td>
<td>msg</td>
<td>断fdafdafda555454564546545645645言</td>
</tr>
</table>
</body>
</html>

  

python SMTP 发送邮件的更多相关文章

  1. python大法好——Python SMTP发送邮件

    Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...

  2. Python——SMTP发送邮件

    一.定义 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.python的smtplib ...

  3. Python SMTP发送邮件

    import smtplibfrom email.mime.text import MIMEText  # 引入smtplib和MIMEText host = 'smtp.163.com'  # 设置 ...

  4. 使用Python SMTP发送邮件

    import smtplibfrom email.mime.text import MIMEText # 服务器SMPTserver = "smtp.163.com"# 发送邮件的 ...

  5. Python SMTP发送邮件Ⅱ

    使用Python发送HTML格式的邮件 Python发送HTML格式的邮件与https://www.xuanhe.net/weixiu/4271.html发送纯文本消息的邮件不同之处就是将MIMETe ...

  6. python SMTP 发送邮件 阿里企业邮箱、163邮箱 及535错误

    class SendEmail(object): def __init__(self, type, to_addr): self.to_addr = to_addr self.sys_date = t ...

  7. python SMTP邮件发送(转载)

    Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...

  8. Python使用SMTP发送邮件[HTML格式、送带附件]

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. python的smtplib提供了一 ...

  9. python通过SMTP发送邮件失败,报错505/535

    python通过SMTP发送邮件失败:错误1:smtplib.SMTPAuthenticationError: (550, b'User has no permission')    我们使用pyth ...

随机推荐

  1. Mysql大数据表优化处理

    原文链接: https://segmentfault.com/a/1190000006158186 当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表 ...

  2. SQL 日期相减(间隔)datediff函数

    select datediff(year, 开始日期,结束日期); --两日期间隔年 select datediff(quarter, 开始日期,结束日期); --两日期间隔季 select date ...

  3. 【Java初探实例篇01】——Java语言基础

    示例系列,将对每节知识辅以实际代码示例,通过代码实际编写,来深入学习和巩固学习的知识点. IDE:intellij IDEA: 语言:Java 本次示例:Java语言基础知识的应用. 创建包day_4 ...

  4. SSM整合(2): spring 与 mybatis 整合

    在进行完spring与springmvc整合之后, 继续 spring与mybatis的整合. 既然是操作数据库, 那必然不能缺少了连接属性 一. db.properties jdbc.driver= ...

  5. Ceph/共享存储 汇总

    Ceph 存储集群 - 搭建存储集群 Ceph 存储集群 - 存储池 Ceph 块设备 - 命令,快照,镜像 Ceph 块设备 - 块设备快速入门 OpenStack 对接 Ceph CentOS7 ...

  6. PTA (Advanced Level) 1005 Spell It Right

    Spell It Right Given a non-negative integer N, your task is to compute the sum of all the digits of  ...

  7. Linux 普通用户启动nginx

    众所周知,apache的80端口为系统保留端口,如果通过其他非root用户启动,会报错如下: ()Permission denied: make_sock: could not bind to add ...

  8. 技术笔记2 jetty jboss

    jetty热部署: jetty启动加载文件webdefault.xml .文件里: <init-param> <param-name>useFileMappedBuffer&l ...

  9. SpringBoot学习(二)——Spring的Java配置方式

    Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 一.@Configuration 和 @Bean Spring的Java配置方式是通过@Configuration和@Bean ...

  10. SpringMVC之使用 POJO 对象绑定请求参数值

    Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值.支持级联属性.如:dept.deptId.dept.address.tel 等 示例: User实体类 p ...