工作中难免会出现自动发送电子邮件的需求,比如说做完自动化测试之后通过电子邮件的形式将结果反馈出来。Python中提供了标准库smtplib来解决这一问题,该模块定义了一个smtp客户端会话对象,能够将邮件发送给smtp服务端。具体用法请查看下面例子。

import smtplib
from email.mime.text import MIMEText def send_email(from_user_name, from_address, password, to_address_list, subject, content, smtp_host):
"""
:param from_user_name: str> 发送邮箱的用户名
:param from_address: str> 发送邮箱地址
:param password: str> 发送邮箱密码
:param to_address_list: list> 接收邮箱地址
:param subject: str> 邮件主题
:param content: str> 邮件内容
:param smtp_host: str> smtp服务器地址
:return send_result: bool > 邮件是否发送成功
"""
smtp = smtplib.SMTP(smtp_host, 465)
smtp.starttls()
smtp.set_debuglevel(1)
smtp.ehlo(smtp_host)
smtp.login(from_address, password)
msg = MIMEText(content, _subtype='html', _charset='utf-8')
msg['From'] = u'%s<%s>' % (from_user_name, from_address)
msg['To'] = ",".join(to_address_list)
msg['Subject'] = subject send_result = False
try:
smtp.sendmail(from_address, to_address_list, msg.as_string())
send_result = True
except smtplib.SMTPException as e:
print(str(e))
send_result = False
finally:
smtp.quit()
return send_result if __name__ == '__main__':
send_email(
from_user_name='from_user_name',
from_address='from_address@xxx.com',
password='email_password',
to_address_list=['a@xxx.com', 'b@xxx.com'],
subject='test_subject',
content='test_content',
smtp_host='smtp.xxx.com'
)

该例子中定义了send_email()函数实现了连接smtp服务端、登录邮箱、发送邮件等功能。其中smtplib.SMTP(smtp_host, 465)在初始化实力时就已经进行了smtp连接,需要传入服务端的host和port,所以入参465并不是固定的,要根据服务端的端口号来改变。

登录SMTP服务器时往往会进行身份验证,这里用到了smtp.login(from_address, password),入参是用于验证的用户名和密码。

登录完成后,可以通过smtp.sendmail(from_address, to_address_list, msg.as_string())把邮件发送给服务端,入参是发件人地址、收件人地址及邮件内容。

参考资料

  • https://docs.python.org/zh-cn/3.9/library/smtplib.html

Python之smtplib模块的更多相关文章

  1. python之smtplib模块 发送邮件

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #smtplib模块 发送邮件 import smtplib from email.mime.text imp ...

  2. python爬虫-smtplib模块发送邮件

    1.代码如下: import smtplib from email.message from EmailMessage # smtplib模块负责发送邮件服务 # email.message模块负责构 ...

  3. python调用smtplib模块发送邮件

    #!/usr/bin/env python #coding: utf-8 import smtplib from email.mime.text import MIMEText from email. ...

  4. 通过python操作smtplib模块发送邮件

    # gconf.py SMTP_SERVER_HOST='smtp.exmail.qq.com' SMTP_SERVER_PORT=25 SMTP_USER='jack@qq.com' # 邮箱客户端 ...

  5. web端自动化——Python的smtplib发送电子邮件

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

  6. python:利用smtplib模块发送邮件

    自动化测试中,测试报告一般都需要发送给相关的人员,比较有效的一个方法是每次执行完测试用例后,将测试报告(HTML.截图.附件)通过邮件方式发送. 参考代码:send_mail.py 一.python对 ...

  7. python:利用smtplib模块发送邮件详解

    自动化测试中,测试报告一般都需要发送给相关的人员,比较有效的一个方法是每次执行完测试用例后,将测试报告(HTML.截图.附件)通过邮件方式发送. 首先我们要做: 进入163邮箱,点击设置中的pop3/ ...

  8. 3.python 发送邮件之smtplib模块

    SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,它是一组用于由源地址到目的地址的邮件传输规则. python中对SMTP进行了简单的封装,可以发送纯文本邮件, ...

  9. Python通过yagmail和smtplib模块发送简单邮件

    SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件.python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是pytho ...

随机推荐

  1. 用webpack发布一个vue插件包

    创建库 本来以为很简单,结果配置了webpack之后,运行build就报错了,似乎不认识es6语法,于是先后安装了几个包: @babel/core @babel/preset-env babel-lo ...

  2. Nexus Repository Manager 3 远程命令执行漏洞(CVE-2019-7238)

    poc地址 https://github.com/magicming200/CVE-2019-7238_Nexus_RCE_Tool

  3. Linux账号管理(入门)

    引言 对用户的操作要在root权限下执行 创建用户 useradd useradd -m username:创建一个用户名为:username的用户 -m参数代表自动创建这个用户的主目录 删除用户 u ...

  4. RSA加密算法学习

    一.公钥加密算法 对称加密 非对称加密 二.RSA加密算法

  5. 将vim打造成Java IDE

    需要的插件列表: Taglist Conque Shell FuzzyFinder NERDTree javaComplete 其他选项: JavaKit exVim winmanager (Depr ...

  6. centos7上用docker搭建简单的前后端分离项目

    1. 安装docker Docker 要求 CentOS 系统的内核版本高于 3.10 ,首先验证你的CentOS 版本是否支持 Docker . 通过 uname -r 命令查看你当前的内核版本 使 ...

  7. MySQL-16-主从复制进阶

    延时从库 介绍 延时从库: 是我们人为配置的一种特殊从库,人为配置从库和主库延时N小时 为什么要有延时从库 数据库故障 物理损坏,普通的主从复制非常擅长解决物理损坏 逻辑损坏,普通主从复制没办法解决逻 ...

  8. 由”二进制里不能有3“引发的对parseInt的思考

    看到一道面试题,["1", "2", "3"].map(parseInt) 答案是多少? 心生好奇,做做看,发现卡住,没什么头绪.首先对pa ...

  9. CAS 5.3使用MySQL数据库验证

    一.本例环境说明 JDK 1.8 CAS 5.3 apache-maven-3.6.0 mysql-5.6.32 二.CAS 5.3基础环境搭建与验证 需要按照<CAS 5.3服务器搭建> ...

  10. NOIP 模拟 $15\; \rm \text{玫瑰花精}$

    题解 \(by\;zj\varphi\) 一道线段树题目 这道题可以通过维护一棵线段树,线段树上的每个节点维护 \(\rm l,r,len,p\) 分别表示这段区间最左边的花精,最右边的花精,被两只花 ...