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 isinstance函数介绍
Apr 14 Python
python 简单的多线程链接实现代码
Aug 28 Python
利用标准库fractions模块让Python支持分数类型的方法详解
Aug 11 Python
Selenium(Python web测试工具)基本用法详解
Aug 10 Python
python利用pandas将excel文件转换为txt文件的方法
Oct 23 Python
Python代码打开本地.mp4格式文件的方法
Jan 03 Python
对python For 循环的三种遍历方式解析
Feb 01 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
Jul 04 Python
基于python实现模拟数据结构模型
Jun 12 Python
运行Python编写的程序方法实例
Oct 21 Python
python爬虫中的url下载器用法详解
Nov 30 Python
详解Flask开发技巧之异常处理
Jun 15 Python
Python开发工具Pycharm的安装以及使用步骤总结
Python语言规范之Pylint的详细用法
Python基础教程,Python入门教程(超详细)
Jun 24 #Python
Django Paginator分页器的使用示例
python随机打印成绩排名表
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 #Python
Python一些基本的图像操作和处理总结
You might like
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
PHP精确计算功能示例
2016/11/29 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
2013/10/17 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
JS实现的走迷宫小游戏完整实例
2017/07/19 Javascript
node.js-v6新版安装具体步骤(分享)
2017/09/06 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
React styled-components设置组件属性的方法
2018/08/07 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
[00:56]跨越时空加入战场 全新祈求者身心“失落奇艺侍祭”展示
2019/07/20 DOTA
python 专题九 Mysql数据库编程基础知识
2017/03/16 Python
python使用opencv进行人脸识别
2017/04/07 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
python 命名规范知识点汇总
2020/02/14 Python
python字符串判断密码强弱
2020/03/18 Python
突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习
2013/01/31 HTML / CSS
大学生四个方面的自我评价
2013/09/19 职场文书
学年自我鉴定范文
2013/10/01 职场文书
高中自我评价分享
2013/12/05 职场文书
百度吧主申请感言
2014/01/12 职场文书
美容院经理岗位职责
2014/04/03 职场文书
公司员工手册范本
2015/05/14 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android