邮箱服务 ---nodemailer 、js-yaml

news/2025/3/18 9:01:20/文章来源:https://www.cnblogs.com/zhuangdd/p/18778214

使用nodejs 发送邮件

 

需要用到两个库

npm install js-yaml
npm install nodemailer

 

YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化格式,用于表示数据结构。它通常用于配置文件、数据交换和设置等场景。

主要特点:

  • 简洁易读:YAML 使用缩进表示层级关系,不需要大量的标点符号,简洁且易于理解。
  • 层级结构:通过缩进表示嵌套结构。
  • 支持数据类型:支持字符串、数字、布尔值、列表、字典等数据类型。
  • 便于与编程语言交互:YAML 能够轻松与多种编程语言进行交互,如 Python、Ruby、JavaScript 等。
name: John Doe
age: 30
address:street: 123 Main Stcity: Anytownzip: 12345
friends:- Jane- Alice- Bob


在这个例子中,nameage 是基本的键值对,address 是一个字典,friends 是一个列表。通过缩进,YAML 能清晰地表示层级关系

 

 

mailInfo.yaml

pass: 授权码 | 密码
user: xxxxx@qq.com 邮箱账号

 

index.js

import nodemailer from "nodemailer";
import yaml from "js-yaml";
import fs from "fs";
import http from "http";
import url from "url";
const mailInfo = yaml.load(fs.readFileSync("./mailInfo.yaml", "utf8"));//初始化邮件服务
const transport = nodemailer.createTransport({service: "qq",host: "smtp.qq.com",port: 465,secure: true,auth: {user: mailInfo.user,pass: mailInfo.pass,},
});http.createServer((req, res) => {const { pathname } = url.parse(req.url, true);const { method } = req;if (method == "POST" && [pathname == "/send/mail"]) {//发送邮件let data = "";req.on("data", (chunk) => {data += chunk;});req.on("end", () => {const { to, subject, text } = JSON.parse(data);transport.sendMail({to, //: "收件人",
          from: mailInfo.user,subject, //: "邮件主题",text, //: "邮件内容",
        });res.end("success");});}}).listen(3000, () => {console.log("server is running at port 3000");});

 

mail.http

POST http://localhost:3000/send/mail HTTP/1.1
Content-Type: application/json

{"to": "xxx@163.com","subject": "Test","text": "Hello World!"
}

 

 

 

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

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

相关文章

从常见问题到核心需求,探讨文件同步软件哪个好用?

在企业日常运营中,文件同步是一项至关重要的任务,尤其是在多服务器、多分支机构或分布式系统中。选择合适的文件同步软件不仅能提高工作效率,还能确保数据的安全性和一致性。文件同步软件哪个好用,本文将探讨如何选择高效可靠的文件同步软件,并推荐一款值得信赖的解决方案…

130道基础OJ编程题之: 89~107

130道基础OJ编程题之: 89~107 @目录130道基础OJ编程题之: 89~10789. BC101 班级成绩输入输出99. BC102 矩阵元素定位100. BC103 序列重组矩阵101. BC104 最高身高102. BC105 矩阵相等判定103. BC106 上三角矩阵判定104. BC107 矩阵转置105. BC108 矩阵交换106. BC109 杨辉三角1…

【2025年企业必看】跨网文件传输难题如何破解?适合IT运维的解决方案

一、哪些行业会面临跨网文件传输场景 跨网文件传输的需求广泛存在于多个行业和企业机构中,以下是一些典型的行业和机构: 1、金融行业 银行:内部不同网域和部门之间、不同分支机构之间需要共享客户数据、交易记录等。 保险公司:总部与各地分公司之间需要传输保单、理赔数据等…

20250318

1. 20号胶 准备迎来建仓机会

UML之泛化用例

UML用例可以泛化,泛化可简化模型、避免重复、易于扩展。通过抽象用例实现复用和模块化。讨论参与者及用例之间的泛化关系,指出不使用泛化可能导致模型复杂和重复工作的问题。在UML中,参与者和用例都可以被泛化或特化,它们在泛化或特化时遵循面向对象中泛化与特化的特性。 用…

01. Linux系统编程入门

入门系统编程,首先理解一下基本的系统调用和库函数的区别 一切皆文件的思想,都是通过文件描述符来进行操作 strace命令文件读写系统调用 #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int main (void) {in…

Macbook pro 打开pgAmin报错

当我们安装完postgresql,打开自带的pgAdmin时会报如下错误,这时候我需要去单独下载一个版本pgAdmin重新安装 下载地址:https://www.pgadmin.org/download/pgadmin-4-macos/

读DAMA数据管理知识体系指南23数据集成概念(上)

读DAMA数据管理知识体系指南23数据集成概念(上)1. 数据集成和互操作 1.1. 数据集成和互操作(DII)描述了数据在不同数据存储、应用程序和组织这三者内部和之间进行移动和整合的相关过程 1.2. 数据集成是将数据整合成物理的或虚拟的一致格式 1.3. 数据互操作是多个系统之间进行…

02. log WriteBatch 的结构和编码

在这样的情况之下,我就想来捋一下,这个代码的逻辑 首先从不同的模块说起吧include/leveldb : 这里面存储了要暴露给外部的API,这里面的结构,从使用者来说会比较熟悉,就是通过这里面的结构,实现它的功能,对不同的组件会有一个直观的定义 db : 这里面是对应的实现的类,不…

01. 非阻塞的Skiplist

首先学习LevelDB当中比较独立的一部分,当然的,读源码的话,一个很好的入门的感觉就是先从一个独立的组件模块开始,一个比较容易的开始,SkipList 然后跳表的基本概念什么的我不太想要去过多的赘述,就像二叉树那样希望能得到log(N)的性能,而又利用概率算法更好实现,可以看…

ROCm技术小结与回顾(下)

示例3–V_MFMA_F64_4x4x4F64 考虑V_MFMA_F64_4x4x4F64指令,它计算大小为44的四个独立矩阵块的MFMA。执行的操作是 ,其中 , , 和 都是大小为44元素的矩阵,N=0,1,2,3。下面的两张图显示了 1)输入参数A和B的四个分量的大小和形状,如图4-18所示。 2)分量映射到波阵面所拥有…

ROCm技术小结与回顾(上)

ROCm技术小结与回顾 在这一部分中,首先检查了Kernel 5在各种AMD GPU和问题大小上的性能,并注意到当网格超过一定大小阈值时,性能似乎会急剧下降。通过实验确定,LLC的大小是大型xy平面问题性能的限制因素。提出了两种不同的解决方法来规避缓存大小的问题,这两种方法都只需要…