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 相关文章推荐
Python3实现连接SQLite数据库的方法
Aug 23 Python
Python可变参数函数用法实例
Jul 07 Python
深入理解python函数递归和生成器
Jun 06 Python
启动Atom并运行python文件的步骤
Nov 09 Python
Django restframework 源码分析之认证详解
Feb 22 Python
VSCode Python开发环境配置的详细步骤
Feb 22 Python
Python跳出多重循环的方法示例
Jul 03 Python
python base64库给用户名或密码加密的流程
Jan 02 Python
Python3.6 中的pyinstaller安装和使用教程
Mar 16 Python
如何基于Python爬取隐秘的角落评论
Jul 02 Python
浅谈Python 钉钉报警必备知识系统讲解
Aug 17 Python
浅谈Selenium+Webdriver 常用的元素定位方式
Jan 13 Python
Python开发工具Pycharm的安装以及使用步骤总结
Python语言规范之Pylint的详细用法
Python基础教程,Python入门教程(超详细)
Jun 24 #Python
Django Paginator分页器的使用示例
python随机打印成绩排名表
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 #Python
Python一些基本的图像操作和处理总结
You might like
《OVERLORD》第四季,终于等到你!
2020/03/02 日漫
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
PHP 模拟$_PUT实现代码
2010/03/15 PHP
php简单判断文本编码的方法
2015/07/30 PHP
php实现按天数、星期、月份查询的搜索框
2016/05/02 PHP
php数据访问之增删改查操作
2016/05/09 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
javascript FormatNumber函数实现方法
2008/12/30 Javascript
Js获取事件对象代码
2010/08/05 Javascript
jquery ui resizable bug解决方法
2010/10/26 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
javascript实现简单加载随机色方块
2015/12/25 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
2016/11/28 Javascript
JavaScript实现弹出广告功能
2017/03/30 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
Python学习笔记之函数的定义和作用域实例详解
2019/08/13 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
2020/12/17 Python
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
环保倡议书格式范文
2014/05/14 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
交通违章检讨书
2014/09/21 职场文书
公司放假通知范文
2015/04/14 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
pytest实现多进程与多线程运行超好用的插件
2022/07/15 Python