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

news2024/11/19 8:31:44

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 attachment
            filename: 'text1.txt',
            content: 'hello world!'
        },
        {   // binary buffer as an attachment
            filename: 'text2.txt',
            content: new Buffer('hello world!','utf-8')
        },
        {   // file on disk as an attachment
            filename: 'text3.txt',
            path: '/path/to/file.txt' // stream this file
        },
        {   // filename and content type is derived from path
            path: '/path/to/file.txt'
        },
        {   // stream as an attachment
            filename: 'text4.txt',
            content: fs.createReadStream('file.txt')
        },
        {   // define custom content type for the attachment
            filename: 'text.bin',
            content: 'hello world!',
            contentType: 'text/plain'
        },
        {   // use URL as an attachment
            filename: 'license.txt',
            path: 'https://raw.github.com/nodemailer/nodemailer/master/LICENSE'
        },
        {   // encoded string as an attachment
            filename: 'text1.txt',
            content: 'aGVsbG8gd29ybGQh',
            encoding: 'base64'
        },
        {   // data uri as an attachment
            path: 'data:text/plain;base64,aGVsbG8gd29ybGQ='
        },
        {
            // use pregenerated MIME node
            raw: '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.coloradmin.cn/o/1046687.html

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

相关文章

酷开系统 | 酷开科技抓好OTT大屏营销投放质与量

近日&#xff0c;QuestMobile发布的《2023年全景生态流量半年报告》数据显示&#xff0c;随着营销场景边界的拓展&#xff0c;越来越多的品牌方开始将阵地由移动端转移到大屏端。OTT及智能硬件营销占中国互联网营销市场规模比例已经从2020年的3.8%升至2022年的7.6%。 同时&…

​中秋夜我读《乡村振兴战略下传统村落文化旅游设计》许少辉八月新书

​中秋夜我读《乡村振兴战略下传统村落文化旅游设计》许少辉八月新书 ​中秋夜我读《乡村振兴战略下传统村落文化旅游设计》许少辉八月新书

深眸科技基于AI机器视觉实现应用部署,构建铝箔异物检测解决方案

异物的定义指的是影响到产品的外观质量或使用性能的外来或产品内部的物质&#xff0c;其产生的原因有很多种&#xff0c;包括在产品生产使用过程中的污染、腐蚀、氧化&#xff0c;以及由于生产工业控制不规范或人为疏忽等。而异物的产生&#xff0c;是导致产品的不良率增加的根…

C# DeOldify 黑白照片 老照片上色

效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System…

美摄美颜SDK:您的一站式美颜解决方案

在当今的数字化时代&#xff0c;美颜技术已经成为了社交媒体、直播、虚拟现实等众多在线平台的重要部分。不论是个人还是企业&#xff0c;我们都希望能够通过使用高质量的美颜SDK来提升我们的产品和服务。那么&#xff0c;如何找到最合适的美颜SDK呢&#xff1f;哪家的美颜SDK最…

C++常见设计模式

设计模式 设计模式的六大原则&#xff1a;https://zhuanlan.zhihu.com/p/110130347 适配器模式 假设Client想要一个正方形&#xff08;client Interface&#xff09;&#xff0c;但是提供的服务&#xff08;service&#xff09;是个圆形&#xff0c;那么我就把这个圆通过适配…

数据结构与算法(C语言版)P7---串、数组、广义表

串、数组、广义表大体了解 我们知道前面学过的__顺序表、链表、栈、队列__&#xff0c;这些都属于线性表。 其中__栈、队列__是操作受限的线性表。 比如&#xff1a; 栈&#xff0c;先进后出&#xff0c;只能在栈顶插入和删除数据。队列&#xff1a;先进先出&#xff0c;只…

TensorFlow入门(八、TensorBoard可视化工具的应用)

TensorBoard常用函数和类http://t.csdn.cn/Hqi9c TensorBoard可视化的过程: ①确定一个整体的图表,明确从这个图表中获取哪些数据的信息 ②确定在程序的哪些节点、以什么样的方式进行汇总数据的运算,以记录信息,比如在反向传播定义以后,使用tf.summary.scalar记录损失值的变…

金蝶云星空与旺店通·企业奇门对接集成其他出库查询打通创建其他出库单

金蝶云星空与旺店通企业奇门对接集成其他出库查询打通创建其他出库单 源系统:金蝶云星空 金蝶K/3Cloud&#xff08;金蝶云星空&#xff09;是移动互联网时代的新型ERP&#xff0c;是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”&#…

CTF_BUUCTF_Reverse解题_01earsyre

题目地址&#xff1a;BUUCTF在线评测 拿到题目解压&#xff0c;PE看哈是否加壳&#xff0c;几位的 64位&#xff0c;GCC没加壳&#xff0c;那好办了直接IDA 64淦 这不是flag就出来了吗&#xff01; 果然是easyea&#xff0c;flag&#xff1a;flag{this_Is_a_EaSyRe} CTF工具包…

传统订货方式和网上企业APP订货方式的差别|网站搭建|小程序开发

传统订货方式和网上企业APP订货方式的差别|网站搭建|小程序开发 1、管货品&#xff1a;实时关注热销和滞销商品的库存订货系统&#xff1a;采购单一键生成入库单&#xff0c;便捷的实现从采购到仓库到销售一体化的进销存管理。 传统模式&#xff1a;进销存管理难&#xff1a;…

工业物联网——定义和主要概念

工业物联网背后的理念是使用工业设施中“哑巴设备”多年来产生的数据。装配线上的智能机器不仅可以更快地捕获和分析数据&#xff0c;且在交流重要信息方面也更快&#xff0c;这有助于更快、更准确地做出业务决策。 信息技术&#xff08;IT&#xff09;和运营技术&#xff08;…

一分钟用手机搞定视频提取伴奏

上台表演需要去掉人声&#xff0c;提取伴奏&#xff0c;这个操作可以直接使用【音分轨】软件中的【视频提取伴奏】功能&#xff0c;接下来教大家具体的操作流程&#xff01; 第一步&#xff1a;在首页点击【人声分离】&#xff0c;上传需要分离的视频&#xff0c;有三种方式可以…

【python零基础入门学习】python进阶篇之高阶函数

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

一键生成,轻松制作个性化瓜分红包活动二维码

在如今竞争激烈的市场中&#xff0c;营销活动成为各个品牌推广的重要手段。而在朋友圈这个信息交流的平台上&#xff0c;如何引起用户的关注和参与&#xff0c;成为了每个营销人员的关注焦点。而打造一个引爆朋友圈的瓜分红包活动&#xff0c;无疑是一种非常有效的方法。接下来…

Win10系统怎么把桌面路径改为其他盘?

Win10系统怎么把桌面路径改为其他盘&#xff1f;Win10系统默认将桌面文件夹路径设置在系统安装盘中&#xff0c;通常是C盘。但是&#xff0c;如果Win10电脑C盘空间不足了&#xff0c;就会影响系统的正常运行。下面小编给大家介绍在Win10系统中将桌面路径改为其他盘的详细方法。…

代码随想录算法训练营第四十一天 | 动态规划 part 3 | 343. 整数拆分、96.不同的二叉搜索树

目录 343. 整数拆分思路代码 96.不同的二叉搜索树思路代码 343. 整数拆分 Leetcode 思路 dp[i] 表示 分拆数字i&#xff0c;可以得到的最大乘积为dp[i]。dp[i] max(dp[i], max((i - j) * j, dp[i - j] * j)) 贪心解法 这里粘贴一下美版 StefanPochmann 老哥的 idea&#…

Host掌控SSD内黑匣子的历史演进

在固态硬盘&#xff08;SSD&#xff09;的世界里&#xff0c;一直有一个神秘的“黑盒子”现象。这个现象指的是主机&#xff08;Host&#xff09;对SSD的控制能力有限&#xff0c;只能通过既定的接口进行基本的读写操作。但随着技术的不断发展&#xff0c;这个“黑盒子”正在被…

Day-01 从 0 开始搭建一套规范的 Vue3.x 项目工程环境

一、架构搭建 请确保你的电脑上成功安装 Node.js&#xff0c;本项目使用 Vite 构建工具&#xff01; 查看 Node.js 版本&#xff1a; ps&#xff1a; 需要注意的是vite需要你的node的版本在12以上 node -v // v16.20.1 建议将 Node.js 升级到最新的稳定版本&#xff1a;…

基于Laravel 5.6的运动健身类小程序前后端源码

基于Laravel 5.6的运动健身、健康类小程序前后端源码&#xff0c;一套比较基础的运动健康、健身类小程序源码。朋友自己无聊写的&#xff0c;比较基础&#xff0c;有需要的可以拿去修修改改升级开发一下。 使用宝塔安装&#xff0c;比较省事&#xff0c;PHP相关的扩展需要启用…