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调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
Aug 15 Python
python实现telnet客户端的方法
Apr 15 Python
python实现kMeans算法
Dec 21 Python
python实现对指定输入的字符串逆序输出的6种方法
Apr 26 Python
django manage.py扩展自定义命令方法
May 27 Python
Django渲染Markdown文章目录的方法示例
Jan 02 Python
Flask框架模板渲染操作简单示例
Jul 31 Python
Python字典生成式、集合生成式、生成器用法实例分析
Jan 07 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
pandas使用之宽表变窄表的实现
Apr 12 Python
Python Selenium模块安装使用教程详解
Jul 09 Python
python3.8动态人脸识别的实现示例
Sep 21 Python
Python开发工具Pycharm的安装以及使用步骤总结
Python语言规范之Pylint的详细用法
Python基础教程,Python入门教程(超详细)
Jun 24 #Python
Django Paginator分页器的使用示例
python随机打印成绩排名表
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 #Python
Python一些基本的图像操作和处理总结
You might like
php cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
php实现复制移动文件的方法
2015/07/29 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
JavaScript定时器和优化的取消定时器方法
2015/07/03 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
2016/09/02 Javascript
Bootstrap模态窗口源码解析
2017/02/08 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
vue中实现Monaco Editor自定义提示功能
2019/07/05 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
详解JS函数防抖
2020/06/05 Javascript
Django框架中处理URLconf中特定的URL的方法
2015/07/20 Python
Python网络编程详解
2017/10/31 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
Python清空文件并替换内容的实例
2018/10/22 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
Python如何转换字符串大小写
2020/06/04 Python
美国新兴城市生活方式零售商:VILLA
2017/12/06 全球购物
澳大利亚领先的皮肤诊所:Skin Matrix(抗衰老、痤疮专家、药妆护肤)
2018/05/20 全球购物
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
存储过程和函数的区别
2013/05/28 面试题
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
俄语专业毕业生推荐信
2013/10/28 职场文书
网站创业计划书
2014/04/30 职场文书
学术会议开幕词
2016/03/03 职场文书
PHP基本语法
2021/03/31 PHP
MySQL分区表实现按月份归类
2021/11/01 MySQL
JavaScript设计模式之原型模式详情
2022/06/21 Javascript