Python 实现发送邮件通知验证码功能

目录

前言

1. 导入库

2. 配置邮件信息

3. 编写发送邮件函数

4. 调用发送邮件函数


前言

        在当今社会,随着互联网技术的不断发展,人们越来越多地依赖于各种在线平台完成日常任务。为了提高用户体验,保障用户账户安全,很多网站和应用程序都采用了验证码技术。本文将介绍如何使用 Python 实现发送邮件通知验证码功能,希望能对读者有所帮助。

 Python3.13安装环境

 💾安装环境👉Python3.13.2安装包下载地址:https://pan.quark.cn/s/6ad05f574acd

Python3.13安装教程

💾安装教程👉Python3.13最新版安装教程

1. 导入库

要实现发送邮件通知验证码功能,我们需要导入 Python 中对应的库,具体如下:

import smtplib
from email.mime.text import MIMEText

2. 配置邮件信息

接下来,我们需要配置邮件的信息,包括发件人、收件人、主题以及邮件的正文内容。具体如下:

import smtplib
from email.mime.text import MIMEText# 定义邮件信息
import platformsystem = platform.system()if system == "Windows":# 如果是Windows系统,则使用下面这一行代码send_mail_fun = "send_mail_windows"
else:# 如果是Linux或者MacOS系统,则使用下面这一行代码send_mail_fun = "send_mail_linux"send_mail_fun

3. 编写发送邮件函数

接下来,我们可以编写发送邮件的函数,这里提供一个简单的例子,你可以根据自己的需求进行修改。

import smtplib
from email.mime.text import MIMEText
import randomdef send_mail_windows(send_to, send_from, subject, content):mail_host = "smtp.126.com"  # 邮箱服务器地址mail_port = 465  # 使用的端口号mail_user = "your_email"  # 用户名(即邮箱地址)mail_pass = "your_password"  # 密码message = MIMEText(content, "html", "utf-8")message["Subject"] = subjectmessage["From"] = send_frommessage["To"] = send_totry:server = smtplib.SMTP_SSL(mail_host, mail_port)server.login(mail_user, mail_pass)server.sendmail(send_from, send_to, message.as_string())print("邮件发送成功")except Exception as e:print("邮件发送失败:", e)finally:server.quit()

4. 调用发送邮件函数

最后,我们可以在主程序中调用发送邮件函数,这里可以生成一个随机的验证码,并将其发送到指定的邮箱。

import smtplib
from email.mime.text import MIMEText
import random
import platformsystem = platform.system()if system == "Windows":# 如果是Windows系统,则使用下面这一行代码send_mail_fun = "send_mail_windows"
else:# 如果是Linux或者MacOS系统,则使用下面这一行代码send_mail_fun = "send_mail_linux"def generate_verify_code():"""生成随机验证码:return: 验证码字符串"""verify_code = ''.join(random.choices('1234567890', k=6))return verify_codedef send_mail(to_email, from_email, verify_code):"""发送邮件通知验证码:param to_email: 收件人邮箱:param from_email: 发件人邮箱:param verify_code: 验证码"""subject = "验证码 - 你的网站名称"html_content = f'<p>尊敬的用户,您的验证码是:<span style="color:#ff0000">{verify_code}</span>,请尽早使用,以免过期。</p>'send_mail_fun(to_email, from_email, subject, html_content)if __name__ == "__main__":to_email = "to_email@example.com"  # 收件人邮箱from_email = "from_email@example.com"  # 发件人邮箱verify_code = generate_verify_code()print("生成的验证码为:", verify_code)send_mail(to_email, from_email, verify_code)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33994.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊聊 Redis 的一些有趣的特性(上)

聊聊 Redis 的一些有趣的特性&#xff08;上&#xff09; 一、持久化 Redis 是内存数据库&#xff0c;数据全部保存在内存中。如果服务器发生宕机&#xff0c;内存中的数据将会全部丢失。为防止系统崩溃后数据丢失&#xff0c;Redis 提供了持久化功能&#xff0c;可将内存中的…

【结构设计】3D打印创想三维Ender 3 v2

【结构设计】3D打印创想三维Ender 3 v2 文章目录 前言一、Creality Slicer1.2.3打印参数设置二、配件更换1.捆扎绑扎线2.气动接头3D打印机配件插头3.3D打印机配件Ender3pro/V2喷头套件4.读卡器 TF卡5.micro sd卡 三、调平四、参考文章总结 前言 使用工具&#xff1a; 1.创想三…

吴恩达机器学习笔记复盘(五)均方误差函数

只讲了线性回归的代价函数。 均方误差&#xff08;Mean Squared Error, MSE&#xff09; 均方误差&#xff08;MSE&#xff09;基于最小二乘法&#xff0c;通过计算预测值与真实值之间差值的平方的平均值来衡量模型的误差。 原理 假设我们有一组数据集&#xff0c;其中是第…

Vue生命周期_Vue生命周期钩子

一、生命周期介绍 每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤&#xff0c;比如设置好数据侦听&#xff0c;编译模板&#xff0c;挂载实例到 DOM&#xff0c;以及在数据改变时更新 DOM。 在此过程中&#xff0c;它也会运行被称为生命周期钩子的函数&#xff0c;让…

arthas常用命令

文章目录 1. dashboard仪表板2. 通过thread命令来获取到math-game.jar进程的Main Class3. 通过jad来反编译Main Class4. watch监视5. 退出arthas6. 小结 欢迎关注 性能测试和优化 专栏&#xff1a;https://blog.csdn.net/qq_41684621/category_12910565.html 1. dashboard仪表…

c#Winform也可以跨平台了GTK框架GTKSystem.Windows.Forms

一、简介 >> 新版下载&#xff0c;问题求助 QQ群&#xff1a;1011147488 1032313876 236066073&#xff08;满&#xff09; Visual Studio原生开发&#xff0c;无需学习&#xff0c;一次编译&#xff0c;跨平台运行. C#桌面应用程序跨平台&#xff08;windows、linux、…

Vue3 Pinia的getters属性

Pinia的getters属性 定义一个bigSum&#xff0c;值是sum*10 可以写成箭头函数的形式upperSchool中使用了this&#xff0c;不能写成箭头函数的形式

Atcoder ABC397-D 题解

https://atcoder.jp/contests/abc397/tasks/abc397_dhttps://atcoder.jp/contests/abc397/tasks/abc397_d 题目描述&#xff1a; 确定是否存在一对正整数,使得 思路&#xff1a; 首先对方程进行转化 设 即 接下来确定的范围 根据立方差公式 因此&#xff0c;我们可以从到来…

医疗送药机器人“空间拓扑优化+动态算法决策+多级容错控制”三重链式编程技术解析与应用

一、引言 1.1 研究背景与意义 在医疗体系中,高效精准的药品配送是保障医疗服务质量和患者安全的关键环节。随着医疗技术的不断进步和医疗需求的日益增长,传统的人工送药方式逐渐暴露出诸多弊端,如配送效率低下、易受人为因素干扰导致错误率上升、人力成本高昂等。特别是在…

Redis实现高并发排行榜的功能

生活中排行榜是常见的功能&#xff0c;如游戏的排行榜&#xff0c;销售额的排行榜等等&#xff0c;排行榜不仅可以让用户有更多的激情参与到活动中来&#xff0c;而且可以更好的留存住用户&#xff0c;如下所示的拉新排行榜&#xff1a; 排行榜是一个常见的业务需求&#xff0…

数字孪生像魔镜,映照出无限可能的未来

在当今科技飞速发展的时代&#xff0c;数字孪生作为一项极具潜力的前沿技术&#xff0c;正逐渐崭露头角&#xff0c;成为众多领域关注的焦点。它犹如一面神奇的魔镜&#xff0c;以数字化的方式精准映照出现实世界中的各种实体与系统&#xff0c;为我们开启了一扇通往无限可能未…

每日一题---

深拷贝和浅拷贝的区别是什么&#xff1f; null 浅拷贝是指只复制对象本身和其内部的值类型字段&#xff0c;但不会复制对象内部的引用类型字段。换句话说&#xff0c;浅拷贝只是创建一个新的对象&#xff0c;然后将原对象的字段值复制到新对象中&#xff0c;但如果原对象内部有…

Chrome 扩展开发 API实战:Sessions (六)

1. 引言 chrome.sessions 是 Chrome 扩展开发者工具的一部分&#xff0c;提供了对最近关闭的标签页和窗口的访问&#xff0c;以及对会话恢复功能的支持。现代浏览器的一个显著特点是为用户提供更多的便利性&#xff0c;比如快速恢复意外关闭的页面。通过 chrome.sessions API&…

Spring Boot对接twilio发送邮件信息

要在Spring Boot应用程序中对接Twilio发送邮件信息&#xff0c;您可以使用Twilio的SendGrid API。以下是一个简单的步骤指南&#xff0c;帮助您完成这一过程&#xff1a; 1. 创建Twilio账户并获取API密钥 注册一个Twilio账户&#xff08;如果您还没有的话&#xff09;。在Twi…

学习15天:pytest

1、.pytest强大的插件 pytest-html(生成html格式的自动化测试报告) pytest-xdist测试用例分布式执行。多CPU分发。 pytest-ordering 用于改变测试用例的执行顺序 pytest-rerunfailures用例失败后重跑 allure-pytest 用于生成美观的测试报告。 2、规则&#xff1a; 模块…

Springboot+mybatis实现增删改查操作

继续写一下删除操作&#xff0c;删除有些不一样&#xff0c;首先在controller里面&#xff0c;我们需要改一下路由&#xff0c;我们后面要写/{id}传入路径参数&#xff0c;用PathVariable注解绑定id&#xff0c;剩下的都一样&#xff0c;传入id&#xff0c;然后写service和mapp…

Visual Studio里的调试(debugging)功能介绍

参考 1- Introduction to Debugging | Basic Visual Studio Debugging&#xff08;这是一位印度博主视频&#xff0c;我下面做到笔记也主要参考她的视频&#xff0c;但不得不说口音太重了&#xff0c;一股咖喱味&#xff09; 目录 个人对调试浅显的认识和对调试的介绍逐行调…

Java多线程与高并发专题——原子类和 volatile、synchronized 有什么异同?

原子类和 volatile异同 首先&#xff0c;通过我们对原子类和的了解&#xff0c;原子类和volatile 都能保证多线程环境下的数据可见性。在多线程程序中&#xff0c;每个线程都有自己的工作内存&#xff0c;当多个线程访问共享变量时&#xff0c;可能会出现一个线程修改了共享变…

c语言笔记 作用域

目录 作用域的基本概念 1.函数声明的作用域 2.局部变量的作用域 3.全局作用域 4.static修饰后的作用域 作用域的基本概念 在c语言中&#xff0c;我们的标志符是具有一定的可见范围的&#xff0c;我们称这个可见范围为作用域 在软件开发中&#xff0c;我们要确定好标识符的作…

MySQL数据库知识总结

MySQL数据库知识总结 一、基本概念及其介绍二、数据库中的数据类型&#xff08;一&#xff09;数值类型&#xff08;二&#xff09;字符串类型&#xff08;三&#xff09;日期类型 三、数据库基础语法&#xff08;一&#xff09;数据库的常用操作&#xff08;二&#xff09;数据…