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 相关文章推荐
Web服务器框架 Tornado简介
Jul 16 Python
简单介绍Python中的filter和lambda函数的使用
Apr 07 Python
Python通过matplotlib画双层饼图及环形图简单示例
Dec 15 Python
python调用OpenCV实现人脸识别功能
May 25 Python
Python UnboundLocalError和NameError错误根源案例解析
Oct 31 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
Dec 20 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
Feb 16 Python
Python异常处理例题整理
Jul 07 Python
Django 路由控制的实现
Jul 17 Python
Python 3 判断2个字典相同
Aug 06 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
Jul 02 Python
python爬虫请求库httpx和parsel解析库的使用测评
May 10 Python
Python开发工具Pycharm的安装以及使用步骤总结
Python语言规范之Pylint的详细用法
Python基础教程,Python入门教程(超详细)
Jun 24 #Python
Django Paginator分页器的使用示例
python随机打印成绩排名表
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 #Python
Python一些基本的图像操作和处理总结
You might like
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
PHPStrom中实用的功能和快捷键大全
2015/09/23 PHP
PHP实现多图上传(结合uploadify插件)思路分析
2016/11/30 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
php app支付宝回调(异步通知)详解
2018/07/25 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
2018/08/04 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
PHP代码加密的方法总结
2020/03/13 PHP
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
2010/08/03 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
利用css+原生js制作简单的钟表
2020/04/07 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
javascript简单链式调用案例分析
2017/05/10 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
2021/03/01 jQuery
Python yield 小结和实例
2014/04/25 Python
Python标准库json模块和pickle模块使用详解
2020/03/10 Python
Python自动创建Excel并获取内容
2020/09/16 Python
python drf各类组件的用法和作用
2021/01/12 Python
AmazeUI 列表的实现示例
2020/08/17 HTML / CSS
会计专业自我鉴定范文
2013/10/06 职场文书
单位实习证明怎么写
2014/01/17 职场文书
小学生打架检讨书
2014/01/26 职场文书
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
干部对照检查材料范文
2014/08/26 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
退休欢送会主持词
2015/07/01 职场文书
2016庆祝教师节新闻稿
2015/11/25 职场文书
导游词之湖州-太湖
2019/10/11 职场文书
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers