Python 自动化运维 smtplib

简介:

  1.实现邮件的发送功能

  

  2.基础使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import  smtplib      ##导入模块
import  string
HOST  =  "smtp.163.com"     ##定义远程smtp主机
SUBJECT  =  " TEST"         ##定义发送主题
TO  =  "1287112485@qq.com"         ##定义接收主机
FROM  =  "18502942450@163.com"    ##定义发送主机
text  =  "python"         ##    ##定义邮件内容
BODY  =  string.join((          ##定义发送格式内容
     "From: %s"  % FROM,
     "To : %s"  % TO,
     "Subject: %s "  % SUBJECT,
     "",
     text
     ), "\r\n" )
server  =  smtplib.SMTP()     ##实例化
server.connect(HOST, "25" )      ##连接远程主机
server.starttls()           ##启用TLS(安全传输)模式
server.login( "18502942450@163.com" , "ws128711" )    ##校验远程主机
server.sendmail(FROM,[TO],BODY)       ##邮件发送功能[发送人,接收人,内容]
server.quit()

## 出现550错误时,打开邮箱客户端授权码

wKiom1neOAWiCToxAAPAa2q7ctc700.png



测试

wKiom1neODLAc0gZAASBf5ahbek528.png


   3.个性化邮件

MIME类:它是一个互联网标准,扩展了电子邮件标准,使其能够支持,非ASCII字符文本;非文本格式附件(二进制、声音、图像等),由多部分(multiple parts)组成的消息体,包含非ASCII字符的头信息。

实例:发送html文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import  smtplib
from  email.mime.text  import  MIMEText     ##导入MIMEText类
import  string
HOST  =  "smtp.163.com"
SUBJECT  =  " TEST"
TO  =  "1287112485@qq.com"
FROM  =  "18502942450@163.com"
msg  =  MIMEText( """               ##创建MIME对象,制定HTML内容,类型,字符编码等
<html>
        
<head>       
     <meta http-equiv="Content-Type"       
           content="text/html; charset=ISO-8859-1" />       
     <title></title>       
     <style type="text/css">       
         table.diff {font-family:Courier; border:medium;}       
         .diff_header {background-color:#e0e0e0}       
         td.diff_header {text-align:right}       
         .diff_next {background-color:#c0c0c0}       
         .diff_add {background-color:#aaffaa}       
         .diff_chg {background-color:#ffff77}       
         .diff_sub {background-color:#ffaaaa}       
     </style>       
</head>       
        
<body>       
            
     <table class="diff" id="difflib_chg_to0__top"       
            cellspacing="0" cellpadding="0" rules="groups" >       
         <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>       
         <colgroup></colgroup> <colgroup></colgroup> <colgroup></colgroup>       
                
         <tbody>       
             <tr><td class="diff_next" id="difflib_chg_to0__0"><a href="#difflib_chg_to0__0">f</a></td><td class="diff_header" id="from0_1">1</td><td nowrap="nowrap"></td><td class="diff_next"><a href="#difflib_chg_to0__0">f</a></td><td class="diff_header" id="to0_1">1</td><td nowrap="nowrap"></td></tr>       
             <tr><td class="diff_next"><a href="#difflib_chg_to0__top">t</a></td><td class="diff_header" id="from0_2">2</td><td nowrap="nowrap">wwwwdwed</td><td class="diff_next"><a href="#difflib_chg_to0__top">t</a></td><td class="diff_header" id="to0_2">2</td><td nowrap="nowrap">wwwwdwed<span class="diff_add">efwe</span></td></tr>       
             <tr><td class="diff_next"></td><td class="diff_header" id="from0_3">3</td><td nowrap="nowrap"><span class="diff_sub">wwwdwqed&nbsp;</span></td><td class="diff_next"></td><td class="diff_header" id="to0_3">3</td><td nowrap="nowrap"><span class="diff_add">wwdwqedewf</span></td></tr>       
             <tr><td class="diff_next"></td><td class="diff_header" id="from0_4">4</td><td nowrap="nowrap">wwefwe</td><td class="diff_next"></td><td class="diff_header" id="to0_4">4</td><td nowrap="nowrap">wwefwe</td></tr>       
             <tr><td class="diff_next"></td><td class="diff_header" id="from0_5">5</td><td nowrap="nowrap">wwgwte</td><td class="diff_next"></td><td class="diff_header" id="to0_5">5</td><td nowrap="nowrap">wwgwte</td></tr>       
             <tr><td class="diff_next"></td><td class="diff_header" id="from0_6">6</td><td nowrap="nowrap">wtgq</td><td class="diff_next"></td><td class="diff_header" id="to0_6">6</td><td nowrap="nowrap">wtgq</td></tr>       
         </tbody>       
     </table>       
     <table class="diff" summary="Legends">       
         <tr> <th colspan="2"> Legends </th> </tr>       
         <tr> <td> <table border="" summary="Colors">       
                       <tr><th> Colors </th> </tr>       
                       <tr><td class="diff_add">&nbsp;Added&nbsp;</td></tr>       
                       <tr><td class="diff_chg">Changed</td> </tr>       
                       <tr><td class="diff_sub">Deleted</td> </tr>       
                   </table></td>       
              <td> <table border="" summary="Links">       
                       <tr><th colspan="2"> Links </th> </tr>       
                       <tr><td>(f)irst change</td> </tr>       
                       <tr><td>(n)ext change</td> </tr>       
                       <tr><td>(t)op</td> </tr>       
                   </table></td> </tr>       
     </table>       
</body>       
        
</html>       
""" ,"html", 'utf-8' )
msg[ "Subject" =  SUBJECT   ##邮件主题
msg[ "From" =  FROM        
msg[ "to"  =  TO
try :
     server  =  smtplib.SMTP()
     server.connect(HOST, "25" )
     server.starttls()
     server.login( "18502942450@163.com" , "ws128711" )
     server.sendmail(FROM,[TO],msg.as_string())
     server.quit()       ##断开连接
     print  "ok"  
except  Exception,e:
     print  "error:"  +  str (e)

测试


wKiom1neOiiSNI2kAASqgHv7xeQ770.png

本文转自  red777    51CTO博客,原文链接:http://blog.51cto.com/12314711/1971457

相关文章
|
1天前
|
存储 安全 数据库
自动化密码填充:使用Python提高日常工作效率
自动化密码填充:使用Python提高日常工作效率
5 0
|
1天前
|
SQL 数据库 数据库管理
python自动生成SQL语句自动化
python自动生成SQL语句自动化
7 1
|
2天前
|
持续交付 Python
使用Python实现自动化Web内容巡检
使用Python实现自动化Web内容巡检
9 1
|
5天前
|
监控 测试技术 持续交付
Python自动化测试代理程序可用性
总之,通过编写测试用例、自动化测试和设置监控系统,您可以确保Python自动化测试代理程序的可用性,并及时发现和解决问题。这有助于提供更可靠和高性能的代理服务。
11 4
|
7天前
|
机器学习/深度学习 数据采集 算法
【Python机器学习专栏】自动化特征选择与优化的实践
【4月更文挑战第30天】特征选择在机器学习中至关重要,能降低模型复杂度,提高泛化能力和避免过拟合。本文介绍了自动化特征选择的三种方法:过滤法(如SelectKBest)、包装法(如RFE)和嵌入法(如随机森林)。通过结合这些方法,可实现特征优化,包括数据预处理、初步筛选、模型训练与评估、特征优化和结果验证。自动化特征选择能提升模型性能,适应不同数据集和任务需求,为机器学习项目提供坚实基础。
|
11天前
|
IDE 测试技术 持续交付
【专栏】Python自动化测试与单元测试框架:提升代码质量与效率
【4月更文挑战第27天】本文探讨了Python自动化测试与单元测试框架在提升代码质量与效率中的作用。Selenium、Appium用于Web和移动应用自动化测试,pytest提供强大、易扩展的测试支持。unittest是Python标准的单元测试框架,支持结构化测试用例和丰富的断言。实践中,应制定测试计划,编写高质量测试用例,实行持续集成与测试,并充分利用测试报告。这些工具和策略能有效保障代码质量和提升开发效率。
|
11天前
|
测试技术 API 持续交付
【专栏】Python自动化测试与单元测试框架
【4月更文挑战第27天】本文探讨了Python在自动化测试与单元测试中的应用,强调其简洁语法和丰富库的优势。文章分为三部分:首先,阐述自动化测试的重要性及Python的易学性、库支持、跨平台和社区支持;其次,介绍了Python的Unittest标准测试框架和Pytest第三方框架的特点与用法;最后,讨论了Web UI和API自动化测试实践,并提出持续集成、测试金字塔等最佳实践。Python为软件开发的测试环节提供了强大支持,帮助构建更稳定的系统。
|
12天前
|
JavaScript 前端开发 测试技术
MechanicalSoup,一个非常实用的 Python 自动化浏览器交互工具库!
MechanicalSoup,一个非常实用的 Python 自动化浏览器交互工具库!
27 9
|
12天前
|
Web App开发 人工智能 Java
Python Selenium实现自动化测试及Chrome驱动使用
Python Selenium实现自动化测试及Chrome驱动使用
11 2
|
14天前
|
测试技术 API 网络架构
Python的api自动化测试 编写测试用例
【4月更文挑战第18天】使用Python进行API自动化测试,可以结合`requests`库发送HTTP请求和`unittest`(或`pytest`)编写测试用例。以下示例: 1. 安装必要库:`pip install requests unittest` 2. 创建`test_api.py`,导入库,定义基础URL。 3. 创建继承自`unittest.TestCase`的测试类,包含`setUp`和`tearDown`方法。 4. 编写测试用例,如`test_get_users`,检查响应状态码和内容。 5. 运行测试:`python -m unittest test_api.py`
16 2