【node】发送邮件及附件简要使用说明

Nodemailer是一个用于Node.js应用程序的模块,可以轻松发送电子邮件。该项目始于2010年,当时没有合理的选项来发送电子邮件消息,如今它是大多数Node.js用户默认选择的解决方案。

一、环境配置

安装模块:nodemailer

npm i nodemailer --save

二、邮箱服务配置如下:

let transporter = nodemailer.createTransport({host: 'smtp.qq.com',port: 465,secure: true,auth: {user: '**********',pass: 'your-password'}
});

邮箱服务提供商的要求,配置SMTP服务器的主机名、端口号和安全选项等细则如下:
host:网易邮箱 | QQ 的SMTP服务器地址
port:端口,如果 secure 为 true,则端口为 465
secure:安全连接
auth:邮箱认证
user:发送方邮箱的账号
pass:邮箱授权密码

另还有下面这样指定的服务器的

var transporter = nodemailer.createTransport({service: 'QQ',auth: {user: '944xxxx69@qq.com',//发送者邮箱pass: 'czboxxxxxqvmbebd' //邮箱第三方登录授权码},logger: bunyan.createLogger({name: 'nodemailer'}),//打印日志debug: true});

service:指定邮件服务商,如“QQ”、“gmail”

三、邮件发送配置

const mailOptions = {from: 'youremail@163.com', // 你的邮箱to: 'test@163.com', // 接收者,可以同时发送多个,以逗号隔开cc:'xx@example.com',subject: '邮件测试',text: '这是一封来自 Node.js 的邮件测试。', // 邮件文本html: `<h1>this is en email from nodemailer</h1>`, // 邮件支持 html,但是和 text 冲突,后者会覆盖掉前者,只能选其一// Apple Watch specific HTML body 苹果手表指定HTML格式watchHtml: '<b>Hello</b> to myself',attachments: [ // 上传附件的格式,path 为相对路径{   // utf-8 string as an attachmentfilename: 'text1.txt',content: 'hello world!'},{   // binary buffer as an attachmentfilename: 'text2.txt',content: new Buffer('hello world!','utf-8')},{   // file on disk as an attachmentfilename: 'text3.txt',path: '/path/to/file.txt' // stream this file},{   // filename and content type is derived from pathpath: '/path/to/file.txt'},{   // stream as an attachmentfilename: 'text4.txt',content: fs.createReadStream('file.txt')},{   // define custom content type for the attachmentfilename: 'text.bin',content: 'hello world!',contentType: 'text/plain'},{   // use URL as an attachmentfilename: 'license.txt',path: 'https://raw.github.com/nodemailer/nodemailer/master/LICENSE'},{   // encoded string as an attachmentfilename: 'text1.txt',content: 'aGVsbG8gd29ybGQh',encoding: 'base64'},{   // data uri as an attachmentpath: 'data:text/plain;base64,aGVsbG8gd29ybGQ='},{// use pregenerated MIME noderaw: 'Content-Type: text/plain\r\n' +'Content-Disposition: attachment;\r\n' +'\r\n' +'Hello world!'}],
};

from :发件人的电子邮件地址。电子邮件地址可以是简单的 ‘sender@server.com’ 或格式化的 ‘“发件人姓名” sender@server.com’,详细信息请参见地址对象
to :以逗号分隔的收件人电子邮件地址列表或数组,将显示在“收件人”字段中
cc :以逗号分隔的抄送人电子邮件地址列表或数组,将显示在“抄送”字段中。
bcc:以逗号分隔的密送人电子邮件地址列表或数组,将显示在“密送”字段中
subject :邮件的主题
text :作为Unicode字符串、缓冲区、流或类似附件的对象的纯文本版本消息
html :作为Unicode字符串、缓冲区、流或类似附件的对象的HTML版本消息,但是和 text 冲突,后者会覆盖掉前者,只能选其一
watchHtml :适用于Apple Watch的特定HTML版本的消息。最新的手表可以正常渲染text/html内容,因此收件人可能永远不会看到watchHtml
amp : 适用于AMP4EMAIL的特定HTML版本的消息,与text和html的使用方式相同。有关使用方法,请参见下面的AMP示例,或参阅此博文以了解发送和渲染的更多信息
attachments:附件对象的数组(有关详细信息,请参见“使用附件”)。附件还可用于嵌入图像
filename: 附件的文件名,可以使用Unicode字符
content:附件的内容,可以是字符串、缓冲区或流
contentType:附件的可选内容类型,如果未设置,将从文件名属性中推导出来
cid: 用于在HTML消息源中使用内联图像的可选内容ID
path:附件的文件路径,如果希望流式传输文件而不是包含在附件中(适用于较大的附件)
href:文件的URL(也可以是data URI)
httpHeaders :与href请求一起传递的可选HTTP头,例如 {authorization: “bearer …”}
contentDisposition : 附件的可选内容展示类型,默认为“attachment”
encoding -:如果设置并且内容是字符串,则使用指定的编码将内容编码为缓冲区。示例值:“base64”、“hex”、“binary”等。如果要在JSON格式的电子邮件对象中使用二进制附件,这很有用
headers : 附件节点的自定义标头。与消息标头的使用方式相同
raw : 是一个可选的特殊值,用于覆盖当前MIME节点的全部内容,包括MIME标头。如果要自己准备节点内容,这很有用。 可以添加任意数量的附件

另其他选项:
sender - 发件人的电子邮件地址,将显示在“发件人”字段中(如果不确定使用哪个,请始终优先使用“from”)
replyTo - 将显示在“回复”字段中的电子邮件地址
inReplyTo - 此邮件所回复的消息的Message-ID
references - Message-ID列表(数组或以空格分隔的字符串)
envelope - 可选的SMTP信封,如果自动生成的信封不合适(有关详细信息,请参见SMTP信封)

attachDataUrls - 如果为true,则将此消息的HTML内容中的data:图像转换为嵌入的附件

3.1、标题邮件地址对象设置

{name: 'Майлер, Ноде',address: 'foobar@example.com'
}
...,
to: 'foobar@example.com, "Ноде Майлер" <bar@example.com>, "Name, User" <baz@example.com>',
cc: ['foobar@example.com','"Ноде Майлер" <bar@example.com>,"Name, User" <baz@example.com>'
],
bcc: ['foobar@example.com',{name: 'Майлер, Ноде',address: 'foobar@example.com'}
]
...

四、发送邮件

transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent');
}
transporter.close();
});

五、参考地址:

https://nodemailer.com/about/

好用的开发工具推荐

历时一年半多开发终于smartApi-v1.0.0版本在2023-09-15晚十点正式上线
smartApi是一款对标国外的postman的api调试开发工具,由于开发人力就作者一个所以人力有限,因此v1.0.0版本功能进行精简,大功能项有:

  • api参数填写
  • api请求响应数据展示
  • PDF形式的分享文档
  • Mock本地化解决方案
  • api列表数据本地化处理
  • 再加上UI方面的打磨

为了更好服务大家把之前的公众号和软件激活结合,如有疑问请大家反馈到公众号即可,下个版本30%以上的更新会来自公众号的反馈。
嗯!先解释不上服务端原因,API调试工具的绝大多数时候就是一个数据模型、数据处理、数据模型理解共识的问题解决工具,所以作者结合自己十多年开发使用的一些痛点来打造的,再加上服务端开发一般是面向企业的,作者目前没有精力和时间去打造企业服务。再加上没有资金投入所以服务端开发会滞后,至于什么时候会进行开发,这个要看募资情况和用户反馈综合考虑。虽然目前国内有些比较知名的api工具了,但作者使用后还是觉得和实际使用场景不符。如果有相关吐槽也可以在作者的公众号里反馈蛤!
下面是一段smartApi使用介绍:
在这里插入图片描述

下载地址:

https://pan.baidu.com/s/1kFAGbsFIk3dDR64NwM5y2A?pwd=csdn

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

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

相关文章

从代码操作层面解释什么是“面相对象编程”?

起因&#xff1a; 今天开了一个小会&#xff0c;会上朋友给我们说了一个事&#xff0c;Java项目上他开发一个小功能 用了很多代码&#xff0c;项目经理发现代码太多&#xff0c;说要优化一下&#xff0c;然后亲自帮同事优化&#xff0c;结果是查库的代码少了至少10条sql&#x…

Java如何解决浮点数计算不精确问题

有的时候博客内容会有变动&#xff0c;首发博客是最新的&#xff0c;其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址[1] 面试题手册[2] 系列文章地址[3] 1. 什么是浮点数计算不精确问题? 在 Java 中&#xff0c;浮点数计算不精确问题指的是使用浮点数进…

接口测试——接口协议抓包分析与mock_L2

目录&#xff1a; 抓包工具charles抓包工具fiddler抓包工具证书配置app抓包实战练习接口测试实战练习 1.抓包工具charles 工具介绍 支持 SSL 代理支持流量控制支持重发网络请求&#xff0c;方便后端调试支持修改网络请求参数支持网络请求的截获并动态修改可以自动将 json 或…

电子电子架构——AUTOSAR信息安全机制有哪些?(上)

电子电子架构——AUTOSAR信息安全机制有哪些&#xff08;上&#xff09; 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 人们会在生活中不断攻击你。他们的主要…

Mysql 子查询,最值查询

1.leetcode-184&#xff1a;查找部门内最高的薪水 首先是一个子查询&#xff0c;找出一个部门里最高的那个工资 随后查找最终需要的值&#xff0c;并且部门编号以及薪水应该包含在这个子查询中 最终答案&#xff1a; # Write your MySQL query statement below SELECT Depar…

爬虫获取一个网站内所有子页面的内容

上一篇介绍了如何爬取一个页面内的所有指定内容&#xff0c;本篇讲的是爬去这个网站下所有子页面的所有指定的内容。 可能有人会说需要的内容复制粘贴&#xff0c;或者直接f12获取需要的文件下载地址一个一个下载就行了&#xff0c;但是如下图十几个一级几十个二级一百多个疾病…

网工内推 | 网络工程师,软考证书优先,六险一金,包吃

01 科力信息 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、负责蚌埠项目的设备安装及调试&#xff1b; 2、对边界网络运行中的监控、故障排除、问题处理。 任职要求&#xff1a; 1、2年及以上网络相关工作经验&#xff0c;有交通管理网络运维经验优先&#xff1b…

webview_flutter

查看webview内核 ​https://liulanmi.com/labs/core.html​ h5中获取设备 https://cloud.tencent.com/developer/ask/sof/105938013 https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator/mediaDevices web资源部署后navigator获取不到mediaDevices实例的解决方案&…

重新认识Java中的死锁问题

一、定义 多个进程因抢夺系统资源而产生相互等待的现象。 二、场景模拟 package com.gui.practise.thread.deadlock;public class DeadLock {private final Object resource1 new Object();//资源 1 private final Object resource2 new Object();//资源 2 public v…

前端架构师之路03_移动端规范兼容处理

1 移动端页面制作规范 1.1 计量单位的使用 CSS 的计量单位选择 px&#xff1a;固定的像素值em&#xff1a;相对父级元素的 font-size 设置来作为当前元素 1em 所代表的像素值&#xff0c;如父节点的 font-size:10px&#xff0c;当前节点的 font-size:1.2em&#xff0c;则当前节…

什么才是物联网领域最好的开发语言?

什么才是物联网领域最好的开发语言&#xff1f; 最好&#xff01;运行最快&#xff1f;开发最高效&#xff1f;最容易学习&#xff1f; 各有特点&#xff01; 采用C/C语言&#xff0c;运行最快&#xff0c;一般采用厂家提供的底层驱动支持包BSP&#xff0c;所有MCU都支持。如…

2009-2018年各省涉农贷款数据(wind)

2009-2018年各省涉农贷款数据&#xff08;wind&#xff09; 1、时间&#xff1a;:209-2018年 2、范围&#xff1a;31省 3、来源&#xff1a;wind 4、指标&#xff1a;涉农贷款 指标解释 &#xff1a;在涉农贷款的分类上&#xff0c;按照城乡地域将涉农贷款分为农村贷款和城…

Spring 学习(五)JavaConfig 实现配置

1. 使用 JavaConfig 实现配置 JavaConfig 是 Spring 项目的一个子项目&#xff0c;Spring 4 后成为核心功能。 注意&#xff1a; 如果开启包扫描&#xff0c;加载配置类以后就可以通过反射拿到配置类中的对象了。Bean 只写在方法上&#xff0c;返回的是一个对象&#xff0c;但…

Django的设计模式及模板层

Django的设计模式及模板层 设计模式MVC和MVT MVC 代表 Model-View-Controller(模型-视图-控制器)模式。 M 模型层(Model),主要用于对数据库层的封装 V 视图层(View),用于向用户展示结果 (WHAT HOW) C 控制(Controller&#xff0c;用于处理请求、获取数据、返回结果(重要) 作…

SpringMVC 学习(六)乱码问题

8. 乱码问题 网络编程中乱码绝大部分都与编码格式有关&#xff0c;常常在涉及到中文的文件编译或者数据传输中出现。 Spring MVC 使用 post 方式传输带中文数据时便会出现乱码&#xff0c;get 方式则不会&#xff0c;解决方式如下&#xff1a; (1) 自定义过滤器 过滤器 pu…

记录使用iText7查找PDF内容关键字坐标,加盖电子签名、印章

一、前言 项目以前签字都是由C端那边进行合成操作&#xff0c;最近项目要求把那块功能&#xff0c;由后端进行实现&#xff0c;其中包含坐标、关键字、任意位置进行签字操作&#xff0c;坐标是最容易实现的&#xff0c;曾经也写过类似的功能在&#xff08;添加图片印章到PDF&a…

如何做好测试?(三)功能测试 (Functional Testing, FT)

1. 功能测试的详细介绍&#xff1a; 功能测试 (Functional Testing, FT)&#xff0c;是一种软件测试方法&#xff0c;旨在验证系统的功能是否按照需求规格说明书或用户期望的方式正常工作。它关注系统的整体行为&#xff0c;以确保各个功能模块和组件之间的交互和集成正确。 …

Spring学习笔记3 Spring对IOC的实现

Spring学习笔记2 Spring的入门程序_biubiubiu0706的博客-CSDN博客 控制反转是一种思想 控制反转是为了降低程序耦合度,提高程序扩展力,达到OCP(开闭原则)原则,达到DIP(依赖倒置原则)原则 控制反转,反转的是什么? 1.将对象的创建权力交出去,交给第三方容器负责 2.对象与对象…

【Vue3 源码解析】nextTick

nextTick 是 Vue 3 中用于异步执行回调函数的函数&#xff0c;它会将回调函数延迟到下一个微任务队列中执行。其中&#xff0c;Vue 更新 DOM 是异步的。下面是对 nextTick 函数的详细解释&#xff1a; export function nextTick<T void, R void>(this: T,fn?: (this:…

某市住房公积金管理中心领导莅临创邻科技考察指导

近日&#xff0c;某市住房公积金管理中心&#xff08;以下简称“公积金中心”&#xff09;领导带队&#xff0c;一行6人莅临浙江创邻科技调研指导&#xff0c;创邻科技CEO张晨、COO吴菁、CTO周研作为代表接待来访并举行会谈。 该公积金中心一行此次莅临创邻科技考察调研&#…