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 字符串定义
Sep 25 Python
在Python中使用poplib模块收取邮件的教程
Apr 29 Python
Python中属性和描述符的正确使用
Aug 23 Python
Python中遇到的小问题及解决方法汇总
Jan 11 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
Apr 04 Python
numpy.random模块用法总结
May 27 Python
Python获取一个用户名的组ID过程解析
Sep 03 Python
python如何从文件读取数据及解析
Sep 19 Python
Python使用configparser库读取配置文件
Feb 22 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
Jun 03 Python
在tensorflow以及keras安装目录查询操作(windows下)
Jun 19 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
Dec 07 Python
Python开发工具Pycharm的安装以及使用步骤总结
Python语言规范之Pylint的详细用法
Python基础教程,Python入门教程(超详细)
Jun 24 #Python
Django Paginator分页器的使用示例
python随机打印成绩排名表
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 #Python
Python一些基本的图像操作和处理总结
You might like
php二维数组排序详解
2013/11/06 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
PHP二维数组矩形转置实例
2016/07/20 PHP
laravel5.5添加echarts实现画图功能的方法
2019/10/09 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
JavaScript函数的4种调用方法详解
2014/04/22 Javascript
node.js中的http.response.writeHead方法使用说明
2014/12/14 Javascript
js匿名函数使用&amp;传参(实例)
2017/09/08 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
用Angular实现一个扫雷的游戏示例
2020/05/15 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
[48:29]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS KG
2018/03/31 DOTA
python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
2018/01/17 Python
python语言中with as的用法使用详解
2018/02/23 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
python利用插值法对折线进行平滑曲线处理
2018/12/25 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
2019/12/10 Python
Python 实现加密过的PDF文件转WORD格式
2020/02/04 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
用python计算文件的MD5值
2020/12/23 Python
世界上最好的帽子:Tilley
2016/11/27 全球购物
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
茱莉蔻美国官网:Jurlique美国
2020/11/24 全球购物
自荐信格式范文
2013/10/07 职场文书
幼儿园毕业家长感言
2014/02/10 职场文书
大三学年自我鉴定范文(3篇)
2014/09/28 职场文书
防汛工作情况汇报
2014/10/28 职场文书
房产证明范本
2015/06/19 职场文书
红与黑读书笔记
2015/06/29 职场文书
元素水平垂直居中的方式
2021/03/31 HTML / CSS
JVM钩子函数的使用场景详解
2021/08/23 Java/Android
光之国的四大叛徒:第一贝利亚导致宇宙毁灭,赛文奥特曼在榜
2022/03/18 日漫
详解OpenCV曝光融合
2022/04/29 Python