nodemailer 是一个简单易用的 Node.js 邮件发送组件Github 项目地址为https://github.com/andris9/Nodemailerbilibili video: linkconstnodemailerrequire(nodemailer);consttransporternodemailer.createTransport({host:smtp.163.com,secureConnection:true,port:465,secure:true,auth:{user:xxx_some163.com,pass:MQQVMSWLNHNXUPAT}});constmailOptions{from:xxx_some163.com,to:632862998qq.com,subject:subject,// text: haha,html:b stylecolor: redhaha/b};transporter.sendMail(mailOptions,(err,info){if(err){console.log(err);}else{console.log(邮件发送info.response);}})设置邮件选项from指定发件人地址或名称。可以是字符串格式(如 “senderexample.com”),也可以是对象格式(如 { name: “Sender Name”, address: “senderexample.com” })transporter.sendMail({from:senderexample.com});transporter.sendMail({from:{name:Sender Name,address:senderexample.com}});to指定收件人地址或名称,可以是字符串或数组格式。与 from 属性类似,也支持对象格式transporter.sendMail({to:recipientexample.com});transporter.sendMail({to:[recipient1example.com,recipient2example.com]});transporter.sendMail({to:[{name:Recipient 1,address:recipient1example.com},{name:Recipient 2,address:recipient2example.com}]});cc指定抄送收件人,格式与 to 属性相同transporter.sendMail({to:primaryexample.com,cc:ccexample.com});bcc指定密送收件人,格式与 to 属性相同transporter.sendMail({to:primaryexample.com,bcc:bccexample.com});subject指定邮件主题transporter.sendMail({subject:Hello from Nodemailer});text指定纯文本格式的邮件内容transporter.sendMail({text:This is the body of the email in plain text.});html指定 HTML 格式的邮件内容transporter.sendMail({html:h1This is the body of the email in HTML/h1});attachments添加附件,可以是文件路径、URL 链接或 base64 编码数据transporter.sendMail({attachments:[{filename:file.pdf,path:./path/to/file.pdf},{filename:image.png,url:https://example.com/image.png},{filename:banana.png,content:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///l2Z/dAAAAM0lEQVR4nGP4/5/h/1G/58ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC,encoding:base64}]});encoding指定邮件内容的编码格式,默认为‘utf-8’transporter.sendMail({text:This is the body of the email in plain text.,encoding:iso-8859-1});priority设置邮件优先级,可选值为‘low’、‘normal’(默认)或 ‘high’transporter.sendMail({priority:high});headers添加自定义的邮件头信息transporter.sendMail({headers:{X-Laziness-level:1000}});几种 nodemailer 使用技巧发送 HTML 格式邮件使用 html 属性设置 HTML 格式的邮件内容支持富文本、图片和超链接等内容transporter.sendMail({from:senderexample.com,to:recipientexample.com,subject:这是一封 HTML 格式的邮件,html:h1这是标题/h1p这是正文内容/pimg srccid:uniquenodemailer.com /});发送附件使用 attachments 属性添加附件支持本地文件、URL 链接和 base64 编码数据transporter.sendMail({from:senderexample.com,to:recipientexample.com,subject:这是一封带附件的邮件,text:邮件内容,attachments:[{filename:file.pdf,path:./path/to/file.pdf},{filename:image.png,cid:uniquenodemailer.com,contentType:image/png,content:fs.createReadStream(./path/to/image.png)}]});发送多重邮件: 使用 sendMail() 方法可以一次发送多封邮件,通过循环或者 Promise.all() 的方式来实现constmailOptions[{from:senderexample.com,to:recipient1example.com,subject:第一封邮件,text:这是第一封邮件的内容},{from:senderexample.com,to:recipient2example.com,subject:第二封邮件,text:这是第二封邮件的内容}];Promise.all(mailOptions.map(optiontransporter.sendMail(option))).then(infoconsole.log(所有邮件发送成功)).catch(errorconsole.error(邮件发送失败:,error));设置邮件模板: 将邮件内容抽离到独立的模板文件中,可以提高邮件内容的可维护性和可重用性。可以使用 Handlebars、Pug 或者 ejs 等模板引擎来渲染模板consthbsrequire(nodemailer-express-handlebars);transporter.use(compile,hbs({viewPath:path/to/email-templates,extName:.hbs}));transporter.sendMail({from:senderexample.com,to:recipientexample.com,subject:这是一封模板邮件,template:email-template,context:{username:John Doe,message:这是模板邮件的内容}});;