Python 发送SMTP邮件的简单教程


Posted in Python onJune 24, 2021

一、两个模块

Python使用SMTP发送邮件的两个模块:smtplib模块、email模块。

  • smtplib:负责发送邮件
  • email:负责构建邮件

二、SMTP端口

1)未加密端口,smtplib.SMTP接口,端口:25
2)使用SSL加密,smtplib.SMTP_SSL接口,端口:465
3)使用TLS加密,端口:587 

三、四大步骤

1、构造邮件内容

# 纯文本
msg = MIMEText(content)
 
# 附件
msg = MIMEMultipart()

2、连接邮件服务器

s = smtplib.SMTP("smtp.qq.com", 25)

3、登陆邮件服务器

s.login(msg_from, passwd)

msg_from:指发送者的邮箱

passwd:指发送者的密码,这个密码不是你的QQ登陆密码,而是你在QQ邮箱设置开启SMTP之后的一个授权码

Python 发送SMTP邮件的简单教程

4、发送邮件

s.sendmail(msg_from, msg_to, msg.as_string())

msg_from:发送方
msg_to:收件方
msg.as_string():要发送的消息

四、常用场景

1、纯文本邮件

import smtplib
from email.mime.text import MIMEText
from email.header import Header
 
 
# 发送者
msg_from = "xxxxx@qq.com"
 
# 这里的密码不是QQ邮箱的密码,而是在设置里开启SMTP服务器后的授权码
passwd = "xxxxx"
 
# 接受者
msg_to = "xxxx@qq.com"
 
# 邮件文本
content = 'Python 邮件发送测试...'
 
# 邮件主题
subject = "test"
 
# 生成一个MIMEText对象(还有一些其它参数)
msg = MIMEText(content)
 
# 放入邮件主题
msg['Subject'] = Header(subject, 'utf-8')
 
# 放入发件人
msg['From'] = msg_from
 
try:
    # 连接邮件服务器
    s = smtplib.SMTP("smtp.qq.com", 25)
 
    # 登录到邮箱
    s.login(msg_from, passwd)
 
    # 发送邮件:发送方,收件方,要发送的消息
    s.sendmail(msg_from, msg_to, msg.as_string())
    print('成功')
except s.SMTPException as e:
    print(e)
finally:
    s.quit()

2、发送html文本

import smtplib
from email.mime.text import MIMEText
from email.header import Header
 
 
# 发送者
msg_from = "xxxx@qq.com"
 
# 这里的密码不是QQ邮箱的密码,而是在设置里开启SMTP服务器后的授权码
passwd = "xxxx"
 
# 接受者
msg_to = "xxxx@qq.com"
 
# 邮件文本
content = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.baidu.com" rel="external nofollow" >这是一个链接</a></p>
"""
 
# 邮件主题
subject = "test"
 
# 生成一个MIMEText对象(
msg = MIMEText(content, 'html', 'utf-8')
 
# 放入邮件主题
msg['Subject'] = Header(subject, 'utf-8')
 
# 放入发件人
msg['From'] = msg_from
 
try:
    # 连接邮件服务器
    s = smtplib.SMTP("smtp.qq.com", 25)
 
    # 登录到邮箱
    s.login(msg_from, passwd)
 
    # 发送邮件:发送方,收件方,要发送的消息
    s.sendmail(msg_from, msg_to, msg.as_string())
    print('成功')
except s.SMTPException as e:
    print(e)
finally:
    s.quit()

3、发送附件

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
 
 
# 发送者
msg_from = "xxxx@qq.com"
 
# 这里的密码不是QQ邮箱的密码,而是在设置里开启SMTP服务器后的授权码
passwd = "xxxx"
 
# 接受者
msg_to = "xxxx@qq.com"
 
# 邮件主题
subject = "test"
 
# 生成一个MIMEMultipart对象(
msg = message = MIMEMultipart()
 
# 邮件文本
message.attach(MIMEText('这是菜鸟教程Python 邮件发送测试……', 'plain', 'utf-8'))
 
# 放入邮件主题
msg['Subject'] = Header(subject, 'utf-8')
 
# 放入发件人
msg['From'] = msg_from
 
# 添加附件
att1 = MIMEText(open('./wordcloud_singer.py', 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
att1["Content-Disposition"] = 'attachment; filename="test.txt"'
msg.attach(att1)
 
try:
    # 连接邮件服务器
    s = smtplib.SMTP("smtp.qq.com", 25)
 
    # 登录到邮箱
    s.login(msg_from, passwd)
 
    # 发送邮件:发送方,收件方,要发送的消息
    s.sendmail(msg_from, msg_to, msg.as_string())
    print('成功')
except s.SMTPException as e:
    print(e)
finally:
    s.quit()

以上就是Python 发送SMTP邮件的简单教程的详细内容,更多关于Python 发送邮件的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python pickle模块用法实例
Apr 14 Python
Python内建数据结构详解
Feb 03 Python
Django模板变量如何传递给外部js调用的方法小结
Jul 24 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
Nov 01 Python
简单了解Django ContentType内置组件
Jul 23 Python
Python大数据之从网页上爬取数据的方法详解
Nov 16 Python
django实现web接口 python3模拟Post请求方式
Nov 19 Python
python等差数列求和公式前 100 项的和实例
Feb 25 Python
Python 去除字符串中指定字符串
Mar 05 Python
详解用Python进行时间序列预测的7种方法
Mar 13 Python
Python3获取cookie常用三种方案
Oct 05 Python
Python3压缩和解压缩实现代码
Mar 01 Python
Python开发工具Pycharm的安装以及使用步骤总结
Python语言规范之Pylint的详细用法
Python基础教程,Python入门教程(超详细)
Jun 24 #Python
Django Paginator分页器的使用示例
python随机打印成绩排名表
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 #Python
Python一些基本的图像操作和处理总结
You might like
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
自己动手开发jQuery插件教程
2011/08/25 Javascript
javascript中定义类的方法汇总
2014/12/28 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
js实现手机发送验证码功能
2017/03/13 Javascript
Angular4学习笔记之准备和环境搭建项目
2017/08/01 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
2017/08/16 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
python中xrange用法分析
2015/04/15 Python
整理Python最基本的操作字典的方法
2015/04/24 Python
python实现批量图片格式转换
2020/06/16 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
详解Django配置优化方法
2019/11/18 Python
python3利用Axes3D库画3D模型图
2020/03/25 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
解决tensorflow读取本地MNITS_data失败的原因
2020/06/22 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
Alba Moda瑞士网上商店:独家意大利时尚女装销售
2016/11/28 全球购物
国家机关领导干部民主生活会对照检查材料思想汇报
2014/09/17 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
2014年财务部工作总结
2014/11/11 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
幼儿园辞职信范文
2015/02/27 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
python执行js代码的方法
2021/05/13 Python
pandas求平均数和中位数的方法实例
2021/08/04 Python
详解TypeScript的基础类型
2022/02/18 Javascript