基于nodemailer实现邮件发送
概述
node中可用nodemailer实现邮件的发送。本文使用QQ邮箱实现邮件的发送。
实现效果

实现
1. QQ邮箱配置
首先需要开启POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,如下图所示。

生成授权码

2. 发送邮件
发送邮件的代码比较简单,如下:
const nodemailer = require('nodemailer')const config = {// 配置服务商提供的发送服务器和端口号host: "smtp.qq.com",auth: {// 发件人邮箱账号user: 'niujp08@qq.com',//发件人邮箱的授权码 需要在自己的邮箱设置中生成,并不是邮件的登录密码pass: '邮箱的授权码'}
}
const transporter = nodemailer.createTransport(config)// 配置收件人信息
const receiver = {// 发件人 邮箱 '昵称<发件人邮箱>'from: `"牛健平"<niujp08@qq.com>`,// 主题subject: '录取通知',// 收件人 的邮箱 可以是其他邮箱 不一定是qq邮箱to: 'niujp08@qq.com',// 可以使用html标签html: `<h1>你好,您的邮件已收到!</h1><hr/><p><b>祝:</b><br/> 身体健康,工作顺利!</p>`
}// 发送邮件
transporter.sendMail(receiver, (error, info) => {if (error) {return console.log('发送失败:', error);}transporter.close()console.log('发送成功:', info.response)
})
相关文章:
基于nodemailer实现邮件发送
概述 node中可用nodemailer实现邮件的发送。本文使用QQ邮箱实现邮件的发送。 实现效果 实现 1. QQ邮箱配置 首先需要开启POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,如下图所示。 生成授权码 2. 发送邮件 发送邮件的代码比较简单,如下…...
【PostgreSQL内核学习(十八)—— (数据库表参数)】
数据库表参数 default_reloptions 函数案例 声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊重他人的知识产权和学术成果,力求遵循合理使用原则,并在适用的情况下注明引用来源。 本文主要参考了《PostgresSQL数据库内核…...
区块链的两个核心概念之一签名, 另一个是共识.
Alice的公私钥, 签名和验证签名仅仅确定了Alice对数字资产A所有权的宣言. 之后, Bob也可以用自己的私钥对资产A进行签名宣誓所有权。区块链中叫双花,即重复宣称所有权, 也称重复花费交易。这时候需要共识算法(集体成员pow或委员会代表pos监督…...
wpf中prism框架切换页面
主页面...
正则表达式(Regular Expression)学习网址分享
正则表达式(Regular expressions,也叫REs、 regexs 或regex patterns),是一种文本模式,包括普通字符(例如,a 到z 之间的字母)和特殊字符(称为"元字符"…...
【已解决】socket.gaierror: [Errno -3] Temporary failure in name resolution
问题描述 今天在环境迁移的过程中遇到多个问题,包括ModuleNotFoundError: No module named flask,socket.gaierror: [Errno -3] Temporary failure in name resolution以及Downloading: "https://huggingface.co/gyrojeff/YuzuMarker.FontDetection…...
CUDA code=700(cudaErrorIllegalAddress) 报错与排查方法
CUDA code700(cudaErrorIllegalAddress) 报错与排查方法 最近笔者在调试自己写的 CUDA 代码时, 遇到了 code700(cudaErrorIllegalAddress) 的报错, 在此记录一下排查和解决方法. 报错 报错是由 CUDA API 函数执行时产生的, 由 checkCudaErrors() 函数检测出(CUDA 常用错误检…...
项目管理过程组
项目管理有2条主线,一条是技术,一条是管理。项目过程由项目团队实施。一般术语以下两大类之一:一类是项目管理过程。另一类是面向产品的过程。在大多数情况下,大多数项目都有共同的项目管理过程。它们通过有目的的实施而互相联系起…...
python每日一练(5)
🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…...
经典循环命题:百钱百鸡
翁五钱一只,母三钱,小鸡三只一钱;百钱百鸡百鸡花百钱。 (本笔记适合能熟练应用for循环、会使if条件分支语句、能格式化字符输出的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:…...
IDEA使用模板创建webapp时,web.xml文件版本过低的一种解决方法
创建完成后的web.xml 文件,版本太低 <!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Appl…...
在Openresty中使用lua语言向请求浏览器返回请求头User-Agent里边的值
可以参考《Linux学习之Ubuntu 20.04在https://openresty.org下载源码安装Openresty 1.19.3.1,使用systemd管理OpenResty服务》安装Openresty。 然后把下边的内容写入到openresty配置文件/usr/local/openresty/nginx/conf/nginx.conf(根据实际情况进行选…...
Hive面试常见基础问题
以下是一些Hive面试问题和答案: Hive是什么? 答:Hive是一个开源的数据仓库工具,用于处理和分析大规模结构化数据。它能够创建、修改和查询表结构,支持多种数据类型和查询操作,同时提供数据汇总和数据查询的…...
设计模式 - 观察者模式
目录 一. 前言 二. 实现 三. 优缺点 一. 前言 观察者模式属于行为型模式。在程序设计中,观察者模式通常由两个对象组成:观察者和被观察者。当被观察者状态发生改变时,它会通知所有的观察者对象,使他们能够及时做出响应…...
【自动驾驶】PETR/PETRv2/StreamPETR论文分析
1.PETR PETR网络结构如下,主要包括image-backbone, 3D Coordinates Generator, 3D Position Encoder, transformer Decoder 1.1 Images Backbone 采用resnet 或者 vovNet,下面的x表示concatenate 1.2 3D Coordinates Generator 坐标生成跟lss类似,假…...
GPT实战系列-Baichuan2本地化部署实战方案
目录 一、百川2(Baichuan 2)模型介绍 二、资源需求 模型文件类型 推理的GPU资源要求 模型获取途径 国外: Huggingface 国内:ModelScope 三、部署安装 配置环境 安装过程...
用netty实现简易rpc
文章目录 rpc介绍:rpc调用流程:代码: rpc介绍: RPC是远程过程调用(Remote Procedure Call)的缩写形式。SAP系统RPC调用的原理其实很简单,有一些类似于三层构架的C/S系统,第三方的客户程序通过接…...
【计算机网络】第三章课后习题答案
习题目录: 【3-01】数据链路(即逻辑链路)与链路(即物理链路)有何区别?"链路接通了"与"数据链路接通了"的区别何在? 【3-02】数据链路层中的链路控制包括哪些功能…...
cesium 地图蒙版遮罩效果
示例代码 <!DOCTYPE html> <html lang"en"><head><!-- Use correct character set. --><meta charset"utf-8" /><!-- Tell IE to use the latest, best version. --><meta http-equiv"X-UA-Compatible"…...
根据前序遍历结果构造二叉搜索树
根据前序遍历结果构造二叉搜索树-力扣 1008 题 题目说明: 1.preorder 长度>1 2.preorder 没有重复值 直接插入 解题思路: 数组索引[0]的位置为根节点,与根节点开始比较,比根节点小的就往左边插,比根节点大的就往右…...
光谱特征选择实战:UVE算法原理、实现与避坑指南
1. UVE算法原理:噪声如何帮你筛选特征? 第一次听说用噪声来筛选特征时,我也觉得不可思议——噪声不是应该干扰数据分析吗?但UVE算法的精妙之处恰恰在于它把噪声变成了"标尺"。想象你在超市挑选苹果,如果闭着…...
从GCC到Nginx:一文搞定Linux开发环境搭建(附1.13.7版本编译避坑指南)
从GCC到Nginx:Linux开发环境全栈配置实战 在Linux系统上搭建完整的开发环境,尤其是Web服务器环境,是每个开发者必须掌握的技能。不同于简单的软件安装,这涉及到工具链配置、依赖管理、编译优化等一系列复杂操作。本文将带你从零开…...
深入解析Anaconda中的pkgs文件夹:功能、管理与优化策略
1. pkgs文件夹的核心功能解析 第一次打开Anaconda安装目录时,很多人都会被那个占据几个GB空间的pkgs文件夹吓一跳。这个看似普通的文件夹,其实是Anaconda生态系统的"心脏"。它不仅仅是存放安装包的仓库,更承担着环境管理的关键角色…...
history 常见优化配置
文章目录 一、写在哪个文件生效?(关键) ✅ Bash 环境下生效位置(最常见) 1️⃣ 全局生效(所有用户) ✅ 推荐方式(最规范) 2️⃣ 全局兜底(老系统) 3️⃣ 当前用户生效 ✅ 各文件加载顺序(很重要) 二、不同场景推荐配置位置 三、验证是否生效 四、一句话总结(运维…...
[具身智能-230]:大模型编程的一个最佳实践:先通过自然语言让大模型编写Python语言代码,功能和性能调通后,再让大模型把python程序转换成C++或其他语言的程序
这种“Python 原型验证 C 性能落地”的开发模式,完美契合了大模型(LLM)的能力特点以及现代软件工程的需求。结合最新的行业实践和技术原理,我为你深度解析为什么这种工作流如此有效,以及在实际操作中需要注意的关键点…...
前端CSS精讲05:Grid网格布局——现代页面最强二维布局方案
文章目录 一、什么是 Grid 布局 二、开启 Grid 三、最核心:划分行和列 1. 定义列数与宽度 2. 定义行数与高度 3. 自适应等分:fr 单位(Grid 神器) 4. 自动适应内容 四、格子之间的间距 五、对齐方式(和 Flex 很像) 1. 整个网格在容器里的位置 2. 整个网格整体对齐 六、子项…...
**TEE加持下的安全编程实践:基于Rust的可信执行环境开发实战**在现代软件系统日益复杂的今天
TEE加持下的安全编程实践:基于Rust的可信执行环境开发实战 在现代软件系统日益复杂的今天,数据隐私与运行时安全已成为开发者不可回避的核心挑战。传统的沙箱机制和用户权限控制早已无法满足对敏感计算场景(如金融交易、生物识别、AI推理&…...
实战指南:基于快马平台生成企业级cc switch管理系统,助力游戏项目开发
今天想和大家分享一个在游戏开发中特别实用的技术——CC Switch系统。这个系统在商业游戏项目中经常被用来做调试和功能开关控制,最近我在InsCode(快马)平台上快速实现了一个完整的企业级解决方案,整个过程特别顺畅。 先说说什么是CC Switch。简单理解就…...
跳点搜索算法(JPS)融合动态窗口法,JPS规划全局路径,动态窗口法执行动态避障
跳点搜索算法(JPS)融合动态窗口法,JPS规划全局路径,动态窗口法执行动态避障最近在搞机器人路径规划,总得在效率和安全之间找平衡。今天聊点实战的——把跳点搜索(JPS)和动态窗口法(D…...
akdbdudhdhfvf
一、OpenAI 1.OpenAI是什么简单来说,OpenAI 大模型 是由美国人工智能公司 OpenAI 开发的一系列大型语言模型(LLMs) 。你可以把它们想象成拥有巨大“知识储备”和“学习能力”的超级大脑,它们被训练用来理解和生成人类语言…...
