Python 发送SMTP邮件的简单教程
作者:Captain_Li 发布时间:2021-04-27 00:26:51
标签:python,发送邮件,SMTP
目录
一、两个模块
二、SMTP端口
三、四大步骤
1、构造邮件内容
2、连接邮件服务器
3、登陆邮件服务器
4、发送邮件
四、常用场景
1、纯文本邮件
2、发送html文本
3、发送附件
一、两个模块
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之后的一个授权码
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()
来源:https://www.cnblogs.com/lemon-le/p/14858267.html


猜你喜欢
- 需求如下: 1.模板页右边包含了一个登陆div,想让没登陆的时候这个div显示,登陆后该div隐藏 2.显示一个欢迎用户的div,主要是想通
- AES加密方式有五种:ECB, CBC, CTR, CFB, OFB从安全性角度推荐CBC加密方法,本文介绍了CBC,ECB两种加密方法的p
- 写在前面作为一名找不到工作的爬虫菜鸡人士来说,登陆这一块肯定是个比较大的难题。 从今天开始准备一点点对大型网站进行逐个登陆破解。加
- 大家好,之前分享过很多关于 Pandas 的文章,今天我给大家分享5个小而美的 Pandas 实战案例。内容主要分为:如何自行模拟数据多种数
- JavaScript ES6之前的还没有Class类的概念,生成实例对象的传统方法是通过构造函数。例如:function Mold(a,b)
- Python是一门简单而文字简约的语言。阅读好的Python程序感觉就像阅读英语,尽管是非常严格的英语。Python的这种伪代码特性是其最大
- 在这篇文章中,我们将讨论mask R-CNN背后的一些理论,以及如何在PyTorch中使用预训练的mask R-CNN模型。1.语义分割、目
- 在调用后端接口时,由于后端接口的不规范统一,接口最外层在没有数据时返回的是空数组(其实更想要的是空json对象),而在有数据时返回的是jso
- 实例如下所示://二维数组去掉重复值 public function a_array_unique($array){ $out
- 【原文地址】My "First Look at Orcas" Presentation 【原文发表日期】 Th
- 在python3中使用dict.keys()返回的不在是list类型了,也不支持索引,我们可以看一下下面这张图片那么我们应该怎么办呢,其实解
- <script> window.onload=function(){ upfile('file.php'); }
- 一、准备工作:安装pywin32,后面开发需要pywin32的支持,否则无法完成与windows层面相关的操作。pywin32的具体安装及注
- explain命令是查看查询优化器如何决定执行查询的主要方法。这个功能有局限性,并不总会说出真相,但它的输出是可以获取的最好信息,值得花时间
- 本文实例讲述了JS高阶函数原理与用法。分享给大家供大家参考,具体如下:如果您正在学习JavaScript,那么您必须遇到高阶函数这个术语。这
- 一、Python中的对象Python中一切皆是对象。————Guido van Rossum(1989)这句话只要你学过python,你就很
- 由于该项目是针对中小学生竞赛并且是第一次举行,所以识别的目标交通标志仅仅只有直行、右转、左转和停车让行。数据集:链接: https://pa
- 前言在前一篇文章中分享了编译器优化的变量捕获部分,本文分享编译器优化的另一个内容—函数内联。函数内联是指将将较小的函数内
- python 实现自动远程登陆scp文件实例代码实现实例代码:#!/usr/bin/expectif {$argc!=3} {s
- 为什么要问如何存储IP?首先就来阐明一下部分人得反问:为什么要问IP得怎样存,直接varchar类型不就得了吗?其实做任何程序设计都要在功能