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的高级Git库 Gittle
Sep 22 Python
在Python操作时间和日期之asctime()方法的使用
May 22 Python
通过Python爬虫代理IP快速增加博客阅读量
Dec 14 Python
Python正则表达式如何进行字符串替换实例
Dec 28 Python
python虚拟环境virtualenv的使用教程
Oct 20 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
Dec 24 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 Python
简单了解django缓存方式及配置
Jul 19 Python
在django中实现页面倒数几秒后自动跳转的例子
Aug 16 Python
解决pycharm最左侧Tool Buttons显示不全的问题
Dec 17 Python
pycharm中使用request和Pytest进行接口测试的方法
Jul 31 Python
python 三种方法实现对Excel表格的读写
Nov 19 Python
Python开发工具Pycharm的安装以及使用步骤总结
Python语言规范之Pylint的详细用法
Python基础教程,Python入门教程(超详细)
Jun 24 #Python
Django Paginator分页器的使用示例
python随机打印成绩排名表
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 #Python
Python一些基本的图像操作和处理总结
You might like
php一个找二层目录的小东东
2012/08/02 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
2013/06/09 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
Javascript表达式中连续的 &amp;&amp; 和 || 之赋值区别
2010/10/17 Javascript
js使用函数绑定技术改变事件处理程序的作用域
2011/12/26 Javascript
js变量以及其作用域详解
2020/07/18 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
使用phantomjs进行网页抓取的实现代码
2014/09/29 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
JQ技术实现注册页面带有校验密码强度
2015/07/27 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
2016/09/18 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
Python实现的简单计算器功能详解
2018/08/25 Python
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
python+logging+yaml实现日志分割
2019/07/22 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
pytorch 批次遍历数据集打印数据的例子
2019/12/30 Python
Python中bisect的使用方法
2019/12/31 Python
使用Python+selenium实现第一个自动化测试脚本
2020/03/17 Python
Python virtualenv虚拟环境实现过程解析
2020/04/18 Python
pandas读取csv文件提示不存在的解决方法及原因分析
2020/04/21 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
服装创业计划书范文
2014/02/05 职场文书
自我鉴定书
2014/03/24 职场文书
班主任新年寄语
2014/04/04 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书
担保书怎么写 ?
2019/04/22 职场文书
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB
分享python函数常见关键字
2022/04/26 Python
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers