首页 > 编程语言 >【node】发送邮件及附件简要使用说明

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

时间:2023-09-27 16:57:29浏览次数:49  
标签:node 简要 text nodemailer attachment 附件 txt com

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: '[email protected]',//发送者邮箱
         pass: 'czboxxxxxqvmbebd' //邮箱第三方登录授权码
     },
     logger: bunyan.createLogger({
         name: 'nodemailer'
     }),//打印日志
     debug: true
 });

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

三、邮件发送配置

const mailOptions = {
    from: '[email protected]', // 你的邮箱
    to: '[email protected]', // 接收者,可以同时发送多个,以逗号隔开
    cc:'[email protected]',
    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 :发件人的电子邮件地址。电子邮件地址可以是简单的 '[email protected]' 或格式化的 '“发件人姓名” [email protected]',详细信息请参见地址对象
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: '[email protected]'
}
...,
to: '[email protected], "Ноде Майлер" <[email protected]>, "Name, User" <[email protected]>',
cc: [
    '[email protected]',
    '"Ноде Майлер" <[email protected]>,
    "Name, User" <[email protected]>'
],
bcc: [
    '[email protected]',
    {
        name: 'Майлер, Ноде',
        address: '[email protected]'
    }
]
...

四、发送邮件

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工具了,但作者使用后还是觉得和实际使用场景不符。如果有相关吐槽也可以在作者的公众号里反馈蛤!

下载地址:

https://pan.baidu.com/s/1iultkXqeLNG4_eNiefKTjQ?pwd=cnbl

标签:node,简要,text,nodemailer,attachment,附件,txt,com
From: https://www.cnblogs.com/lichong951/p/17733086.html

相关文章

  • Node.js vs. Spring Boot:Hello World 性能对决,谁更快一点?
    前言:SpringBoot在Java生态中备受欢迎,它是一款基于Java构建的轻量级服务端框架,主要用于Web服务。SpringBoot的应用使得创建各类基于Spring的企业级应用变得异常简单。Node.js作为一种基于ChromeV8引擎的JavaScript运行时环境,在服务端上运行JavaScript代码。它以其独......
  • Node.js vs. Spring Boot:Hello World 性能对决,谁更快一点?
    前言:SpringBoot在Java生态中备受欢迎,它是一款基于Java构建的轻量级服务端框架,主要用于Web服务。SpringBoot的应用使得创建各类基于Spring的企业级应用变得异常简单。Node.js作为一种基于ChromeV8引擎的JavaScript运行时环境,在服务端上运行JavaScript代码。它以其独特......
  • vscode 運行node.js的命令會瀏覽其他程序打開
      终端输入命令get-commandnpm后   至C:\Windows\System32刪除npm ......
  • node安装和配置以及node版本切换介绍(nvm安装配置)
     一、node的安装(可以去文末直接安装nvm管理器,就不用配置了)1   下载|Node.js,也可以下载以往版本,window是以msi结尾的文件2  安装,直接一直安装就行,如果有之前安装的版本,先进行卸载,然后再进行安装 3 安装完成后查看版本号node-vnpm-v编辑4  配置全局包的安装......
  • Measuring Node Contribution to Community Structure With Modularity Vitality
    MeasuringNodeContributiontoCommunityStructureWithModularityVitality用模块性生命力度量节点对社区结构的贡献摘要社区感知中心性是网络科学中一个新兴的研究领域,关注节点在社区结构中的重要性。先前的方法扩展了经典的中心性度量来解释社区结构,而与社区检测理论几......
  • node 下载安装包出错
    1.不知道为什么,安装就出错,试了好几种方式终于好了记录一下 解决:前置条件:node 1.1>npmconfigsetlegacy-peer-depstrue2>npmcacheclean--force然后用npminstall安装就行2.启动的时候又报了如下的错误 2.解决:[email protected]然后在npmrun......
  • 使用node整理每日待办
    使用node整理每日待办项目结构node代码constfs=require("fs");constpath=require("path");/***@description使用node脚本编写博客待办因为每天想干的事情都不确定,无序完成一些任务,完成的任务后面都会添加链接......
  • crash —— 获取系统NODE、ZONE、SECTION、MEMBLOCK等信息
    crash>kmem-nNODESIZEPGLIST_DATABOOTMEM_DATANODE_ZONES0100925439ffff88e03ffc1000----ffff88e03ffc1000ffff88e03ffc5000......
  • Could not open client transport with JDBC Uri: jdbc:hive2://node1:10000: java.n
    今天发现连接beeline是时候连接不上,不应该啊昨晚还可以的qaq  破案了,我启动了metastore之后忘记去启动hiveserver2hiveserver2都没启动能连上就怪了 一定一定要记得启动顺序!!!hadoop+metastore+hiveserver2+beeline ......
  • 简要说明网络原理
    @TOC1.IP地址概念IP地址主要用于标识网络主机.其他网络设备(路由器)的网络地址.IP地址用于定位主机的网络地址格式IP地址是一个32位的二进制数,通常被分割为4个8位二进制数,通常用"点分十进制"的方式来表示.如:101.1.1.1特殊IP地址127.*:本机环回测试,通常为127.0.0.1......