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的类变量和成员变量用法实例教程
Aug 25 Python
Python中设置变量访问权限的方法
Apr 27 Python
Python+Opencv识别两张相似图片
Mar 23 Python
python3连接MySQL数据库实例详解
May 24 Python
使用Python处理Excel表格的简单方法
Jun 07 Python
TensorFlow 模型载入方法汇总(小结)
Jun 19 Python
python matlibplot绘制多条曲线图
Feb 19 Python
浅谈tensorflow中几个随机函数的用法
Jul 27 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
Jan 15 Python
Python简单基础小程序的实例代码
Apr 28 Python
Python3基于print打印带颜色字符串
Jul 06 Python
详解matplotlib绘图样式(style)初探
Feb 03 Python
Python开发工具Pycharm的安装以及使用步骤总结
Python语言规范之Pylint的详细用法
Python基础教程,Python入门教程(超详细)
Jun 24 #Python
Django Paginator分页器的使用示例
python随机打印成绩排名表
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 #Python
Python一些基本的图像操作和处理总结
You might like
谈PHP生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
php 解决旧系统 查出所有数据分页的类
2012/08/27 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
javascript中replace( )方法的使用
2015/04/24 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
js判断手机号运营商的方法
2015/10/23 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
Python中的面向对象编程详解(下)
2015/04/13 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
如何在vscode中安装python库的方法步骤
2021/01/06 Python
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
澳大利亚最大的女装零售商:Millers
2017/09/10 全球购物
ABOUT YOU罗马尼亚:超过600个时尚品牌
2019/09/19 全球购物
奥地利体育网上商店:Gigasport
2019/10/09 全球购物
药学专业个人的自我评价
2013/12/31 职场文书
考试作弊被抓检讨书
2014/01/10 职场文书
人事档案接收函
2014/01/12 职场文书
少年闰土教学反思
2014/02/22 职场文书
小学教学随笔感言
2014/02/26 职场文书
redis cluster支持pipeline的实现思路
2021/06/23 Redis
Mysql案例刨析事务隔离级别
2021/09/25 MySQL
Hive HQL支持2种查询语句风格
2022/06/25 数据库
MySQL生成千万测试数据以及遇到的问题
2022/08/05 MySQL