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 相关文章推荐
Python2.7下安装Scrapy框架步骤教程
Dec 22 Python
python基于ID3思想的决策树
Jan 03 Python
Python学习之Django的管理界面代码示例
Feb 10 Python
TensorFlow模型保存/载入的两种方法
Mar 08 Python
python Celery定时任务的示例
Mar 13 Python
Python实现的绘制三维双螺旋线图形功能示例
Jun 23 Python
python Flask 装饰器顺序问题解决
Aug 08 Python
python3 flask实现文件上传功能
Mar 20 Python
python实现逐个读取txt字符并修改
Dec 24 Python
python字符串和常用数据结构知识总结
May 21 Python
详解python列表(list)的使用技巧及高级操作
Aug 15 Python
python开发前景如何
Jun 11 Python
Python开发工具Pycharm的安装以及使用步骤总结
Python语言规范之Pylint的详细用法
Python基础教程,Python入门教程(超详细)
Jun 24 #Python
Django Paginator分页器的使用示例
python随机打印成绩排名表
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 #Python
Python一些基本的图像操作和处理总结
You might like
php操作mysql数据库的基本类代码
2014/02/25 PHP
Laravel 5框架学习之Eloquent 关系
2015/04/09 PHP
如何用PHP来实现一个动态Web服务器
2015/07/29 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
没有document.getElementByName方法
2013/08/19 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
Node.js抓取中文网页乱码问题和解决方法
2015/02/10 Javascript
JavaScript实现找质数代码分享
2015/03/24 Javascript
javascript实现日期时间动态显示示例代码
2015/09/08 Javascript
深入浅析AngularJS中的module(模块)
2016/01/04 Javascript
jquery+css3实现会动的小圆圈效果
2016/01/27 Javascript
AngularJS中的过滤器filter用法完全解析
2016/04/22 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
node.js通过axios实现网络请求的方法
2018/03/05 Javascript
Webpack的dll功能使用
2018/06/28 Javascript
简述vue路由打开一个新的窗口的方法
2018/11/29 Javascript
electron踩坑之dialog中的callback解决
2020/10/06 Javascript
python基础教程之udp端口扫描
2014/02/10 Python
Python中处理字符串之endswith()方法的使用简介
2015/05/18 Python
Python实现一个Git日志统计分析的小工具
2017/12/14 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
浅谈Python 多进程默认不能共享全局变量的问题
2019/01/11 Python
python 动态调用函数实例解析
2019/10/21 Python
python实现批量转换图片为黑白
2020/06/16 Python
Python偏函数Partial function使用方法实例详解
2020/06/17 Python
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
公司年会演讲稿范文
2014/01/11 职场文书
未受刑事制裁公证证明
2014/09/20 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
老公写给老婆的检讨书
2015/05/06 职场文书