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 相关文章推荐
Tornado协程在python2.7如何返回值(实现方法)
Jun 22 Python
Python with语句上下文管理器两种实现方法分析
Feb 09 Python
matplotlib 输出保存指定尺寸的图片方法
May 24 Python
Python地图绘制实操详解
Mar 04 Python
Python爬虫 urllib2的使用方法详解
Sep 23 Python
Python自动重新加载模块详解(autoreload module)
Apr 01 Python
keras load model时出现Missing Layer错误的解决方式
Jun 11 Python
如何在Windows中安装多个python解释器
Jun 16 Python
Python学习之路之pycharm的第一个项目搭建过程
Jun 18 Python
如何在python中实现线性回归
Aug 10 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
Dec 04 Python
能让Python提速超40倍的神器Cython详解
Jun 24 Python
Python开发工具Pycharm的安装以及使用步骤总结
Python语言规范之Pylint的详细用法
Python基础教程,Python入门教程(超详细)
Jun 24 #Python
Django Paginator分页器的使用示例
python随机打印成绩排名表
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 #Python
Python一些基本的图像操作和处理总结
You might like
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
ThinkPHP登录功能的实现方法
2014/08/20 PHP
用 Composer构建自己的 PHP 框架之基础准备
2014/10/30 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
2016/04/02 PHP
PHP的Trait机制原理与用法分析
2019/10/18 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
用JQuery 实现的自定义对话框
2007/03/24 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
js焦点文字滚动效果代码分享
2015/08/25 Javascript
深入解析JavaScript中的数字对象与字符串对象
2015/10/21 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
基于zepto.js实现登录界面
2017/10/09 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
解决vue热替换失效的根本原因
2018/09/19 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
js+canvas绘制图形验证码
2020/09/21 Javascript
Python中logging模块的用法实例
2014/09/29 Python
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
Python实现自动登录百度空间的方法
2017/06/10 Python
Python读取txt内容写入xls格式excel中的方法
2018/10/11 Python
对python文件读写的缓冲行为详解
2019/02/13 Python
Python的log日志功能及设置方法
2019/07/11 Python
学习和使用python的13个理由
2019/07/30 Python
Ray-Ban雷朋美国官网:全球领先的太阳眼镜品牌
2016/07/20 全球购物
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
土木工程专业大学毕业生求职信
2013/10/13 职场文书
出国留学经济担保书
2014/04/01 职场文书
幼儿园开学寄语
2014/04/03 职场文书
入党推优材料
2014/06/02 职场文书
安全生产目标管理责任书
2014/07/25 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
退休教师追悼词
2015/06/23 职场文书