Python实现邮件发送功能的示例详解
作者:许华添 发布时间:2022-08-18 13:15:43
标签:Python,邮件,发送
想实现发送邮件需要经过以下几步:
1、登录邮件服务器
2、构造符合邮件协议规则要求的邮件内容
3、发送
Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件,它对smtp协议进行了简单的封装。
这里我们用qq邮箱为例,并且自己是可以给自己发邮件的。
在开始前我们先做准备工作:
登录qq邮箱,后点击“设置”
点击“账户”
确保前两项已开启,然后点击生成授权码。
因为我们网页登录时的密码是不可以用来python上使用;qq为了安全,我们平常用网页或者qq官方的客户端可以用我们的qq密码登录,但是第三方(比如python)是不可以登录的。
所以要生成第三方授权码。
代码
import smtplib
from email.mime.text import MIMEText # 邮件正文
from email.header import Header # 邮件头
# 登录邮件服务器
smtp_obj = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人的SMTP服务器,端口号25
smtp_obj.login("你的qq账号", 'admc********') # 括号中的内容分别是发件人邮箱账号、授权码
smtp_obj.set_debuglevel(1) # 显示调试信息,可以不用写
# 设置邮件头信息
msg = MIMEText("测试用Python发送email。", "plain", "utf-8") # 正文内容
msg['From'] = Header("小天天", 'utf-8') # 发件人名字
msg["To"] = Header("有缘人", "UTF-8") # 接收者名字
msg["Subject"] = Header('用Python发送邮件2022', 'utf-8') # 主题
# 发送
smtp_obj.sendmail('发送人邮箱', ['接收人邮箱'], msg.as_string())
#第一个是发送人邮箱;第二个是数组,说明可以给多个人发送;msg就是刚刚写的发送内容。
运行代码
细节:SMTP使用是25端口,SSL使用的是456端口;SMTP是明文发送,SSL是加密发送
发送html格式的内容
import smtplib
from email.mime.text import MIMEText # 邮件正文
from email.header import Header # 邮件头
# 登录邮件服务器
smtp_obj = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人的SMTP服务器,端口号25
smtp_obj.login("2308748900", 'admcwiwxxgmwdifh') # 括号中的内容分别是发件人邮箱账号、邮箱密码
smtp_obj.set_debuglevel(1) # 显示调试信息,可以不用写
# 设置邮件头信息
# HTML
msg_body='''
<h4>python发送html格式的邮件</h4>
<p>
测试用HTML格式发送邮件
</p>
'''
msg = MIMEText(msg_body, "html", "utf-8") # 将plain改成html
msg['From'] = Header("小天天", 'utf-8') # 发件人名字
msg["To"] = Header("有缘人", "UTF-8") # 接收者名字
msg["Subject"] = Header('用Python发送邮件2022', 'utf-8') # 主题
# 发送
smtp_obj.sendmail('2308748900@qq.com', ['2308748900@qq.com'], msg.as_string())
主要代码和上面基本一样,只是将文本改成html的代码内容而已
来源:https://blog.csdn.net/gushendezhufu/article/details/127587989
0
投稿
猜你喜欢
- 说明1、模型集成是指将一系列不同模型的预测结果集成在一起,从而获得更好的预测结果。2、对于模型集成来说,模型的多样性非常重要。Diversi
- 说明:这个例子,首先是把SPAN里的内容用display:none;干掉,就是不显示; 然后在A:HOVER时,再把SPAN里的内容disp
- 这篇博客将介绍如何使用OpenCV制作Mask图像掩码。使用位运算和图像掩码允许我们只关注图像中感兴趣的部分,截取出任意区域的ROIs。应用
- 大家可以先参考官方演示文档:效果图:'''==============3D scatterplot=========
- '*************************************************'函数名:getMaxO
- 概述从今天开始, 小白我将带领大家一起来补充一下 数据库的知识.条件查询我们可以使用关键词Where来指定条件, 用于插入, 修改删除或者查
- 最近在作图时需要将输出的图片紧密排布,还要去掉坐标轴,同时设置输出图片大小。要让程序自动将图表保存到文件中,代码为:plt.savefig(
- PHP getDocNamespaces() 函数实例返回 XML 文档的根节点中声明的命名空间:<?php $xml=<<
- 一、前提条件安装了Fiddler了(用于抓包分析)谷歌或火狐浏览器如果是谷歌浏览器,还需要给谷歌浏览器安装一个SwitchyOmega插件,
- 前言:常见的加密算法基本分为这几类:线性散列算法(签名算法)MD5,sha1对称性加密算法 AES DES非对称性加密算法 RSA一、md5
- django中的超链接,在template中可以用{% url 'app_name:url_name' param%}其中a
- 这几天做了一个专题,放到服务器后发现从首页链接到专题页面正常,但是从专题页面跳转到首页就会出现乱码。很是蹊跷,专题页面和首页没有共同的文件,
- 在CentOS上安装MySQL数据库服务器后,系统出于安全性考虑,缺省不支持用户通过非本机连接上数据库服务器,如果想让用户通过另外一台机器连
- 为什么在facebook交友会更容易?facebook与传统的BSP(Blog Service Provider)到底有什么不同?是因为它有
- Appium在前文的讲解中,我们学会了如何安装Appium,以及一些基础获取App元素内容的方式。但认真看过前文的读者,肯定在博主获取元素的
- 原作者:Jonathan 翻译:charlee原文:http://f6design.com/journal/2006/10/21/the-v
- 本文实例为大家分享了Django实现分页功能,为了容易区别功能的展现,先创建一个数据库,用数据库中的数据做演示。创建数据库步骤如下:1.创建
- 本文实例分析了LINUX下Oracle数据库用户创建方法。分享给大家供大家参考,具体如下:1)登录linux,以oracle用户登录(如果是
- 本文实例为大家分享了python实现网上购物系统的具体代码,供大家参考,具体内容如下1.购物商城的需求分析:1、输出欢迎界面还有登录注册菜单
- 1、说明装饰本质上是一个Python函数,它能使其他函数在没有任何代码变化的情况下增加额外的功能。有了装饰,我们可以抽出大量与函数功能无关的