1
1
import smtplib # 发送邮件 连接邮件服务器
2
2
from email .mime .text import MIMEText # 构建邮件格式
3
-
3
+ from email .mime .multipart import MIMEMultipart # 发送多个部分
4
+ from email .mime .image import MIMEImage # 图片格式
5
+ from email .mime .application import MIMEApplication # 发送附件
4
6
5
7
class SendEmail :
6
8
def __init__ (self ):
@@ -13,11 +15,7 @@ def __init__(self):
13
15
# 发送邮件的服务器地址 qq为smtp.qq.com 163邮箱为smtp.163.com
14
16
self .email_host = 'smtp.qq.com'
15
17
16
- def send_email (self , userlist , subject , content ):
17
- message = MIMEText (content , _subtype = 'plain' , _charset = 'utf-8' )
18
- message ['Subject' ] = subject
19
- message ['From' ] = self .send_user
20
- message ['To' ] = ';' .join (userlist ) # 收件人列表以分号隔开
18
+ def _send (self , userlist , message ):
21
19
# 实例化邮件发送服务器
22
20
server = smtplib .SMTP ()
23
21
# 连接qq邮箱服务器
@@ -29,28 +27,64 @@ def send_email(self, userlist, subject, content):
29
27
# 关闭邮箱
30
28
server .close ()
31
29
32
- def send_test (self , userlist , passNumber , failNumber ):
30
+ def send_text (self , userlist , subject , content ):
31
+ """
32
+ 发送文本邮件
33
+ :param userlist: 接收人 列表形式
34
+ :param subject: 主题
35
+ :param content: 内容
36
+ :return:
37
+ """
38
+ message = MIMEText (content , _subtype = 'plain' , _charset = 'utf-8' )
39
+ message ['Subject' ] = subject
40
+ message ['From' ] = self .send_user
41
+ message ['To' ] = ';' .join (userlist ) # 收件人列表以分号隔开
42
+ self ._send (userlist , message )
43
+
44
+ def send_image (self , userlist , subject , img_path ):
33
45
"""
34
- 发送测试结果
35
- :param userlist:
36
- :param passNumber:
37
- :param failNumber:
46
+ 发送图片
47
+ :param userlist:收件人列表
48
+ :param subject:主题
49
+ :param img_path:图片路径
38
50
:return:
39
51
"""
40
- totalNumber = passNumber + failNumber
52
+ message = MIMEMultipart ('related' )
53
+ content = MIMEText ('<html><body><img src="cid:imageid" alt="imageid"></body></html>' , 'html' , 'utf-8' ) # 正文
54
+ message .attach (content )
55
+ message ['Subject' ] = subject
56
+ message ['From' ] = self .send_user
57
+ message ['To' ] = ';' .join (userlist ) # 收件人列表以分号隔开
58
+
59
+ file = open (img_path , "rb" )
60
+ img_data = file .read ()
61
+ file .close ()
62
+
63
+ img = MIMEImage (img_data )
64
+ img .add_header ('Content-ID' , 'imageid' )
65
+ message .attach (img )
41
66
42
- # %.2f表示保留小数点后两位小数 %%表示百分之百
43
- passPercentage = "%.2f%%" % (passNumber / totalNumber * 100 )
44
- failPercentae = "%.2f%%" % (failNumber / totalNumber * 100 )
67
+ self ._send (userlist , message )
68
+
69
+ def send_vedio (self , userlist , subject , file ):
70
+ """
71
+ 发送文件
72
+ """
73
+ message = MIMEMultipart ('related' )
74
+ content = MIMEText ('<html><body><img src="cid:imageid" alt="imageid"></body></html>' , 'html' , 'utf-8' ) # 正文
75
+ message .attach (content )
76
+ message ['Subject' ] = subject
77
+ message ['From' ] = self .send_user
78
+ message ['To' ] = ';' .join (userlist ) # 收件人列表以分号隔开
45
79
46
- sub = "测试结果报告"
47
- content = " 测试用例总数\t %s个\n 通过个数\t %s个\n 失败个数\t %s个\n 通过率\t %s\n 失败率\t %s" % (
48
- totalNumber , passNumber , failNumber , passPercentage , failPercentae )
49
- self .send_email (userlist , sub , content )
50
- return True
80
+ part_attach1 = MIMEApplication (open (file , 'rb' ).read ()) # 打开附件
81
+ part_attach1 .add_header ('Content-Disposition' , 'attachment' , filename = file ) # 为附件命名
82
+ message .attach (part_attach1 ) # 添加附件
51
83
84
+ self ._send (userlist , message )
52
85
53
86
if __name__ == "__main__" :
54
87
send = SendEmail ()
55
88
user_list = ['1364826576@qq.com' ]
56
- send .send_test (user_list , 4 , 5 )
89
+ send .send_vedio (user_list , "图片" , "1.jpeg" )
90
+ # send.send_text(user_list, 4, 5)
0 commit comments