在春节来临之际使用 javascript + Node.js 实现邮件传输功能给远方的朋友发封邮件拜个早年

模板驱动型文档自动化:从填空到交付的工业级实践 文档自动化是企业内容规模化生产的核心能力,其本质是将重复性排版与格式控制转化为可复用、可验证、可协作的工程化流程。区别于规则驱动的复杂维护和AI生成的不可控输出,模板驱动型文档自动化以所见即所得的结构化模板为契约,通过容器-区块-变量三层模型实现数据精准填充与样式严格复现。该技术显著提升市场提案、HR通知书、咨询报告等高频文档的交付效率与品牌一致性,适用于非技术人员快速构建符合印刷、归档及多端适配要求的专业文档流水线。本文深入解析Sqribble为代表的模板驱动架构设计逻辑与落地要点。 阅读详情

一、引言

电子邮件,是互联网应用最广泛使用的服务之一,通过电子邮件系统,我们可以与世界上任何一个角落的网络用户进行联系。

在日常生说中,我们会常常看到一些网站有邮箱获取验证码验证注册、修改或者找回密码……等功能,目的是验证当前的用户确实是我们所声称的用户,也更是为了进一步保护用户的个人资料等信息,因为这个涉及到了隐私问题。近期,本人开发的个人博客项目—源码空间的找回密码功能,就需要用到邮件传输的功能,如下图所示:

在这里插入图片描述

那么问题来了,我们怎么实现邮件传输功能呢?不可能说又要学习其他的语言啥的吧,这个大家不用担心,在 Node.js环境下,已经给我们提供了许多邮件传输功能的第三方包,并且使用它们非常简单。那么今天我们使用Nodemailer第三方包以及Node.js + Express实现邮件传输功能。

二、Nodemailer 模块

1、简介

Nodemailer 是 Node.js 应用程序的一个第三方模块,可以方便地实现发送电子邮件的功能。
Github项目地址为:https://github.com/andris9/Nodemailer。

该项目于 2010 年开始,至今已经相当稳定,这也是如今大多数 Node.js 用户默认情况下发送邮件的解决方案。

2、特点

  • 支持Unicode编码
  • 支持Window系统环境
  • 支持HTML内容和普通文本内容
  • 支持附件(传送大附件)
  • 支持HTML内容中嵌入图片
  • 支持SSL/STARTTLS安全的邮件发送
  • 支持内置的transport方法和其他插件实现的transport方法
  • 支持自定义插件处理消息
  • 支持XOAUTH2登录验证

3、使用

  1. 导入 Nodemailer 模块
npm install nodemailer
  1. 创建可重复使用的传输器对象
// 格式:
let transporter = nodemailer.createTransport(transport[, defaults]);
/*
参数说明
transporter(传输器对象): 是一个能够发送邮件的对象
transport(传输): 是传输配置对象、连接 URL 或传输插件实例,对象类型,对传输器的配置
defaults(默认):是定义邮件选项的默认值的对象
*/
let transporter =nodemailer.createTransport({
    host: "smtp.163.com",// 主机:以什么邮箱格式发送:我这里用的是163邮箱,当然如果是qq邮箱,则将163换成qq即可
    secureConnection: true,//使用了SSL,安全方式发送,建议都加
    port: 465, //端口:SMTP端口
    // 身份验证
    auth: {
      	// 上面的host选项是什么格式的邮箱,就使用什么邮箱
        user: "inlett_wang@163.com", //你的邮箱
        pass: "***********" //邮箱授权码,并非是你的邮箱密码
    }
});

如何获取授权码,请参考以下链接:

  • 163邮箱获取授权码:https://jingyan.baidu.com/article/495ba841ecc72c38b30ede38.html
  • qq邮箱获取授权码:https://jingyan.baidu.com/article/90895e0f2af42664ec6b0b14.html
  1. 配置 SMTP 信封
 //设置邮箱的选项
const options = {
                from: '"源码空间" <inlett_wang@163.com>', //自己的邮箱
                to: req.params.uemail, //要发送的邮箱
                subject: "源码空间验证码", //设置主题
                html: "验证码为:<h4>54321</h4>60秒内有效",//可发送带有html标签的数据
  							text:"验证码为:54321,60秒内有效",//可发送文本的数据
  							// 可携带附件(多个)
  							attachments : 
                    [
                        {
                            filename: 'img1.png',            // 改成你的附件名
                            path: 'public/images/img1.png',  // 改成你的附件路径
                            cid : '00000001'                 // cid可被邮件使用
                        },
                        {
                            filename: 'img2.png',            // 改成你的附件名
                            path: 'public/images/img2.png',  // 改成你的附件路径
                            cid : '00000002'                 // cid可被邮件使用
                        },
                    ]
            };

  1. 发送邮件
// 格式:
传输器对象.sendMail(SMTP配置, function(err, info) {
   代码块...
});

transporter.sendMail(options, function(err, info) {
  	// 如果发送出现异常
    if (err) {
      // 打印异常信息,并停止该函数
      return console.log(err);
    }
    console.log('发送成功');
});

三、可重用的邮件发送模块(以服务器挂载路由函数为例)

  1. 创建一个根目录,并在根目录中初始化一个配置文件
npm init -y
  1. 在根目录下切换到终端中,导入express 模块 和 nodemailer 模块
npm install express nodemailer
  1. 在根目录下创建一个app.js文件作为服务器
const express = require("express");
const sendMail = require("./sendMail");
const app = express();

app.get("/sendMail", (req, res) => {
    sendMail.sendEmail("源码空间", "2840250928@qq.com", "光明顶团队祝愿全国人民新春快乐!", "<h4>春节将至,愿你背上幸福的行囊,带上开心的思念果,跨上快乐号的列车,把一年的劳累遗忘,一年的疲惫甩开,轻松快乐归家,平安按时到达。无忧考网搜集的《2021给领导拜年短信祝福语》,供大家参考阅读,更多内容 ,请访问祝福语频道。</h4>");
    // 因为上述方法中包含异步事件,所有我们如果使用同步的方法则获取不到返回的值,所有我们要使用定时器来获取返回的值
    setTimeout(() => {
        // 如果返回的异常不为空,则证明邮件发送存在异常
        if (sendMail.error) {
        	// 那么就返回状态码和异常提示信息
            res.send({
                status: 1,
                msg: "邮件发送失败!"
            });
        }
        // 否则返回的异常为空,那么证明邮件发送成功,返回状态码和提示信息
        res.send({
            status: 0,
            msg: "邮件发送成功!"
        });
    }, 1000);

});

app.listen(8080, "127.0.0.1", () => {
    console.log("服务器开启成功!");
});
  1. 在根目录下创建sendMail.js文件作为可重用的邮件传输模块
// 导入nodemailer模块
const nodemailer = require("nodemailer");

// 发送方的邮箱
const myEmailer = "inlett_wang@163.com";

// 创建可重复使用的邮件传输器
const transporter = nodemailer.createTransport({
    host: "smtp.163.com", //邮箱格式
    secureConnection: true, //使用了 SSL
    port: 465, //SMTP端口
    // 配置邮箱选项
    auth: {
        user: myEmailer, //你的邮箱
        pass: "*********" //邮箱授权码,并非邮箱密码
    }
});

// 创建发送邮箱的函数
module.exports.sendEmail = function(title, toEmail, subject, html = null, text = null, attachments = null) {
    // 配置SMTP信封
    const options = {
        from: `"${title}" <${myEmailer}>`, //发送方的邮箱
        to: toEmail, //接收方的邮箱
        subject: subject, //邮箱主题
        html: html ? html : "", //判断html参数是否存在,存在即发送,否则为空字符串
        text: text ? text : "", //判断text参数是否存在,存在即发送,否则为空字符串
        attachments: attachments ? attachments : "" //判断附件是否存在,存在即发送,否则为空字符串
    };
    // 发送邮箱
    transporter.sendMail(options, (err, info) => {
        // 判断是出现异常
        if (err) {
            // 出现异常则将异常对象存储
            module.exports.error = err;
        }
        // 无异常则存储null
        module.exports.error = null;
    });
};

注意:当在路由模块、路由处理函数模块、或者app服务器模块下想要使用邮件传输功能,那么就可以使用以上步骤三的sendMail模块拿过来配置后直接使用,并在使用的地方调用函数即可。

四、总结

以上基本上就是在Node.js环境下使用nodemailer第三方包实现邮件传输功能的基本使用方法,当然还有其他的办法实现邮件传输,下期我们介绍其他的方法。

如果本篇文章有哪里写的不对的地方,还请各位朋友多多指点,当前有喜欢或者想学习Node.js或者js脚本的朋友也可以私信哦!在这里先给各位朋友拜个早年,祝各位朋友新年快乐,事业顺利,学业有成!

【信息科学与工程学】【数据中心】第三十三篇 云数据中心综合解决方案探讨04 的计算/存储/网络/安全/互相访问设计的计算/存储/网络/安全设计的计算/存储/网络/安全设计编号类型问题(计算机系统架构/网络架构/信息架构/业务架构/组织架构/管理架构)问题的数学分析(方程/算法+求解器)参数列表时序与稳态/非稳态分析关联知识(工具/工艺)互联网接入区/DMZ区 等(含详细资源规划、互相访问限制、安全设计、网络配置、软件策略、算法策略与算法详细设计;;设计的完整代码(示例)多/双/单Region+AZ(含详细资源规划与配置设计)A276​ (基于。 阅读详情

相关推荐

新年快乐! javascript实现超级炫酷的3D烟花特效

主要为大家详细介绍了javascript实现超级炫酷的3D烟花特效,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

js发送邮件(node.js)

以前看别人博客留言或者评论文章时必须填写邮箱信息,感觉甚是麻烦。 后来才知道是为了在博主回复后让访客收到邮件,用心良苦。 于是我也在新增留言和文章评论的接口里,新增了给自己发送邮件提醒的功能。

sun_qqq的博客 2190

VSCode 1.85便携版安装与配置:解决远程服务器glibc版本过低报错的保姆级指南

本文详细介绍了如何通过VSCode 1.85便携版解决远程服务器glibc版本过低导致的兼容性问题。通过环境隔离和版本固化的方法,开发者可以在老旧服务器上稳定运行Remote-SSH插件,同时保留主力VSCode的配置。文章提供了从下载安装到深度配置的完整指南,帮助用户快速搭建稳定的开发环境。

weixin_30279315的博客 576

8 个实用 JavaScript 电子邮件 API 库

英文| https://enlear.academy/8-best-javascript-email-api-libraries-9749bd524ea2翻译 | 杨小爱1、Nodemailer地址:https://nodemailer.com/about/Nodemailer 是一个用于 Node.js 应用程序的模块,可以轻松发送电子邮件。该项目早在 2010 年就...

web前端开发 3660

深入解析Xilinx IDELAYE2在FPGA时序优化中的关键作用与实战配置

本文深入解析了Xilinx FPGA中IDELAYE2模块在时序优化中的关键作用。作为精密的信号延时微调器,IDELAYE2通过可编程的抽头延迟,有效解决高速接口中数据与时钟的相位偏差问题。文章详细阐述了其必须与IDELAYCTRL配对使用的核心机制,并对比分析了FIXED、VARIABLE和VAR_LOAD三种工作模式的实战配置方法与代码示例,为FPGA工程师提供了解决时序收敛难题的关键硬件配置指南。

pear55的博客 1183

UVM入门与进阶学习笔记17——寄存器模型(3)

目录寄存器模型的常规方法mirror、desired和actual valueprediction的分类自动预测显式预测uvm_reg的访问方法mem与reg的联系和差别内建(built-in)sequences寄存器模型内建序列存储模型内建序列寄存器健康检查寄存器应用场景寄存器检查功能覆盖率概述覆盖率自动收集模式覆盖率外部事件触发收集 寄存器模型的常规方法 mirror、desired和actual value 在应用寄存器模型时,除了利用它的寄存器信息,也会利用它跟踪寄存器的值。 寄存器模型中的每

weixin_41979380的博客 7536

如何使用NodeJS发送邮件

对于登录注册或者一些监控、数据处理的定时任务,可能需要发送邮件的能力。 今天分享一下使用node server发送邮件的流程。 发送邮件的过程是,你的客户端给邮件服务器发信息,然后邮件服务器发给目标邮件服务器,目标邮件服务器再通知到客户端,目标用户就收到了。 如果我们使用网易客户端可以直接用账号密码登录自己的邮箱。使用node server发邮件,相当于第三方客户端。 第三方客户端指的就是除了网易自己的客户端外的其他客户端。 发邮件流程变成了 这里有个问题,使用网易客户端可以直接通过账号密码登录邮箱,第

doomliu的博客 3835

Reactor 响应式编程(第一篇:Reactor核心)

响应式:响应式编程: 全异步、消息、事件回调默认还是用当前线程,生成整个流、发布流、流操作.log();//只要不指定线程池,默认发布者用的线程就是订阅者的线程;

moments的博客 1572

不写一行代码,如何实现前端数据发送到邮箱?

作者 | 刘早起来源 |早起学Python经常在很多网站上都能看到类似的表单信息功能,用户只需要填写相关内容,点击提交按钮,就可以将表单内容发送到管理员邮箱。恰好最近在折腾我的网站时,也想添加一个这样的功能,但是搜了一圈后,这样的功能要么是使用Wordpress构建的网站,后台有现成的功能,要么就是使用php或者C#作为后端实现的,而我的网站是基于原生H5写的,没有相关...

AI科技大本营 1617

PCL DBSCAN密度聚类【2026最新版】

点云密度聚类的PCL代码实现,与matlab自带的密度聚类算法进行对比验证,结果一致。3万多个点能再2秒左右运行出结果,算法效率尚可。

点云侠的博客 5681

PyTorch深度学习项目实战100例数据集

最近很多订阅了的用户私信咨询有些数据集下载不了以及一些文章中没有给出数据集链接,为了解决这个问题,专门开设了本篇文章,提供数据集下载链接,打包100例的所有数据集。本专栏适用人群:深度学习初学者,专栏将具体讲解如何快速搭建深度学习模型用自己的数据集实现深度学习小项目。 本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。

优快云 精品推荐 2万+

js发送邮件 不会调用客户端。

方式三:使用node中nodemail 首先需要安装node的环境,然后安装nodemailer: npm install nodemailer --save npm install nodemailer-smtp-transport --save config.js下的配置: module.exports = { email: {//邮件配置 servic...

weixin_34348805的博客 467

2025年7月5日全国青少年信息素养大赛Python编程初中组复赛真题+答案解析

2025年7月5日全国青少年信息素养大赛Python编程初中组复赛真题+答案解析

伶俐角少儿编程 464

4SAPI实战指南:5个轻量AI项目月入21万的技术复盘

AI API服务正从‘能用’走向‘敢商用’,其核心在于稳定性、简易性、可扩展性与安全性四大工程能力。当AI能力被封装为标准HTTP接口,开发者关注点已从模型训练转向服务交付——如何保障99.95%可用性、3步完成调用、按需弹性计费、前端直连不失控,成为个人变现的关键门槛。4SAPI通过心跳熔断、平铺参数、阶梯调用配额、三重签名等机制,显著降低AI工程化门槛。结合微信小程序、轻量服务器与极简架构,真实验证了‘单接口+单页面+单支付’的微服务变现路径,在教育、法律、电商、学术、财税等垂直场景中实现低代码、高确定

weixin_31124163的博客 360

YOLO26涨点改进 | 小目标损失函数独家改进篇 | TGRS 2025 | 引入AdaFocalLoss损失函数,改进小目标检测,自适应聚焦小目标与样本分布不平衡,提升检测精度与训练稳定性

目录一、前言:YOLO26原生损失函数在小目标检测中的核心痛点(涨点瓶颈)1.1 小目标权重不足,聚焦能力薄弱1.2 样本分布不平衡适配性差,正负样本权重失衡1.3 训练不稳定,易出现梯度消失/震荡1.4 未区分小目标与背景的冗余干扰,误检率高二、TGRS 2025顶刊灵感解析:自适应聚焦损失的核心逻辑三、全网独家创新:AdaFocalLoss损失函数设计与YOLO26适配(核心重点,可复现)3.1 AdaFocalLoss函数整体设计(独家设计,清晰可复现)3.2 各核心模块详细设计(独家创新,可直接复现

qq_36130719的博客 202

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

GPT-4o与Claude 4实战对比:写作流畅性、代码严谨性、长文穿透力

大语言模型不是抽象能力的比拼,而是具体任务中的工具适配问题。从基础概念看,AI写作本质是语境建模,代码理解依赖上下文推理,长文档分析则考验知识联结与逻辑校验能力;其技术价值在于将模糊需求转化为可执行约束,显著降低沟通成本与返工风险;典型应用场景包括职场邮件润色、生产级Python调试、PRD合规审计及多轮项目协同;本文聚焦真实工作流中高频出现的三大核心能力——写作流畅性、代码严谨性、长文穿透力,结合72小时实测数据,揭示不同模型在中文职场语境下的差异化优势与落地策略。

A458545418的博客 452

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

CnOpenData 线上招聘网站信息数据

CnOpenData线上招聘网站信息数据库是一个覆盖中国主流招聘平台、时间跨度长、更新频率高的劳动力市场需求侧大数据集合。本数据库汇集了,为学术界和业界提供了一扇实时观察中国劳动力市场动态的窗口。

CnOpenData_wj的博客 2601

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

无后端支持,前端无法实现邮件发送

html实现邮箱发送邮件_js发送邮件至指定邮箱功能有以下几种方法* 方法一: 利用a标签的href属性 浏览器客户端安装有邮件客户端软件,比如 Foxmail,Outlook,YoMail之类的,客户端还需要手工配POP3和SMTP 方法二:利用js中的location 跟第一种方式一样 需要浏览器客户端安装邮件客户端软件 方法三:使用node中的nodeemail 方法四:使用node中的emailjs 第三种和第四种 需要搭建基于nodejs的服务器 并要求使用Node.js v6.0.0或更

songqiu821的博客 436

node.js发送邮件_使用Node.js发送电子邮件

node.js发送邮件 大多数Web应用程序将需要发送奇数电子邮件。 无论是本质上是交易性的,还是以市场为导向的,例如时事通讯,促销或产品推荐,这都是无处不在的要求。 而且,如果您要发送电子邮件,则很可能希望使用HTML发送出去。 实际上,发送电子邮件非常简单。 也就是说,在批量发送时,您还需要考虑各种其他问题,例如处理退回,跟踪点击以及与垃圾邮件过滤器进行斗争。 但是,对于本文而言,我们...

619

js通过插件发送邮件

这个插件为SmtpJS 官网地址为https://www.smtpjs.com/ 方法很简单 <script src="https://smtpjs.com/v2/smtp.js"> </script> Email.send( "from@you.com", "to@them.com", "This is a subject", "th...

weixin_34241036的博客 2147

【教程】JavaScript利用Nodemailer发送电子邮件

1. 前言 最近在写一个博客系统,在「评论」模块中,有这样一个需求:有用户1已经评论留言,用户2在用户1的评论下,给用户1回复评论。 这时候需要发一封邮件通知用户1的评论收到了回复,所以就想写一个自动发邮件的功能。 在网上找到了「Nodemailer」这个项目,「Nodemailer」是一个简单易用的Node.js邮件发送组件,可以使用SMTP协议,用指定的账户发送电子邮件。 但是「Nodemailer」只能运行在Node.js环境中,在浏览器中直接使用会报错,使用不了。所以我的想法是,在自己的「阿里云服务

火星基地 1807

“mailto”你会用吗?

不要小看简单的 “mailto”,需要注意的地方也不少呢。原文来自经典论坛大家知道,mailto是网页设计制作中的一个非常实用的html标签,许多拥有个人网页的朋友都喜欢在网站的醒目位置处写上自己的电子邮件地址,这样网页浏览者一旦用鼠标单击一下由mailto组成的超级连接后,就能自动打开当前计算机系统中默认的电子邮件客户端软件,例如OutLook Express以及Foxmail等。当然有关mai

yangzhpro的专栏 4万+

程序员特有的拜年祝词

(给程序员的那些事加星标)大年初一,「程序员的那些事」给各位拜年啦~

程序员的那些事 7672

我们做了一个拜年H5,客户感动哭了却拉黑了我……

作者:乔不撕全文共 5091 字 21 图,阅读需要 15 分钟———— / BEGIN / ————01. 为什么是H5?年关将近,基本上各个公司各个品牌都在想如何给客户拜年,我司也不例外,老板说了,不能够是群发消息,必须要和别人不一样。于是这个重任落到了我的头上。然后我就脑洞大开,要不一样?那还不简单!不到一天的时间我就出了三个方案:方案一拍部电影,叫《回家的诱惑》,剧情我都想好了,李大璐、朱

人人都是产品经理 1224

js发送邮件

// 引入nodemailer var nodemailer = require('nodemailer'); // 创建发送对象 var transporter = nodemailer.createTransport({ // 邮箱服务的主机: qq: smtp.qq.com; 163: smtp.163.com host: 'smtp.qq.com', // 开启安全连接 secureConnection: true, port: 465, ..

love_unchanged的博客 5190

XMLHttpRequest 对象实现文件上传和下载功能

XMLHttpRequest 对象实现文件上传和下载功能(内含源码哦????!) 今日学习目标:XMLHttpRequest 对象实现文件上传和下载功能(内含源码哦????!)一、引言二、XMLHttpRequest 简介1、概念2、作用3、发展史4、XMLHttpRequest 与 Ajax 的关系三、XMLHttpRequest 的使用1、步骤2、实例GET请求查询字符串示例POST请求获取和设置头部信息示例3、请求头数据Content-Type(内容类型)Requests (请求头)Responses

abraham_ly的博客 7785
上一篇: XMLHttpRequest 对象实现文件上传和下载功能
下一篇: Multer + Express 实现文件上传
御弟謌謌
博客等级 码龄7年 192粉丝 168原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御弟謌謌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值