当前位置: 首页 > 后端技术 > Node.js

Node.js自动发送邮件-只需要20行代码就够了

时间:2023-04-03 17:50:58 Node.js

前言因为最近建站需要加友情链接,又不想每次都改静态文件,所以拉出一个表格准备填我的给大家的信息然后提交给后台审核,但是我需要一个邮件通知大家审核通过了,所以需要一个发邮件的插件nodemailer[0]。当然,老板们已经知道了。因为我玩node的不多,所以也先把效果图录在这里,老严,你个头条党,你约定定期给女朋友发邮件的小浪漫呢?我们不着急,是吧?后面再说,我们一步步尝试手动使用这个插件。Nodemailer准备我们将需要一个SMTP授权码来发送电子邮件!我们需要去邮箱拿。这里我选择QQ邮箱(因为我找的教程是QQ的)。进入QQ邮箱选择账号.jpg)进入POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务POP3/SMTP服务下面打开.jpg)发送信息验证.jpg)复制授权码.jpg)配置站在这里,别滑得太快创建文件夹目录名大家请创建我这里命名时的入口文件app.js大家然后初始化npminit-y安装npminstallnodemailer老严这里安装的nodemailer是4.4.0版本.package.js完成后是这样的{"name":"nodeMailDemo","version":"1.0.0","description":"","main":"app.js","scripts":{"test":"echo\"Error:notestspecified\"&&exit1",//dev这个是老严自己加的"dev":"nodeapp.js"},"keywords":[],"author":"","license":"ISC","dependencies":{"nodemailer":"^4.4.0"}}来吧宝贝们看黑板,现在重点来了,重点进入app.js引入constnodemailer=require('nodemailer');create//创建nodemailer配置lettransporter=nodemailer.createTransport({//支持列表:https://nodemailer.com/smtp/well-known/service:'QQ',//老严用QQport:465,//SMTP端口不用担心secureConnection:true,auth:{user:'你的邮箱@qq.com',pass:'这里填写我们刚刚获取的smtp授权码',}});sendContentletmailOptions={from:'"NickName"',to:'收件人邮箱',subject:'帖子标题',/text:'这里填写你发送的内容'//html:'这里也可以写html'};执行并发送transporter.sendMail(mailOptions,(error,info)=>{if(error){returnconsole.log(error);}console.log('MailSuccessfullysentID:',info.messageId);});总共才20行的代码能行吗?Nodeapp.js老严配置constnodemailer=require('nodemailer');//nodepluginfunctionsendEmail(data){lettransporter=nodemailer.createTransport({service:'QQ',//发件人邮箱厂商,支持列表:https://nodemailer.com/smtp/well-known/port:465,//SMTP端口secureConnection:true,//SSL安全链接auth:{//发件人账号密码user:'2407488005@qq.com',//账号pass:'smtp授权码',//smtp授权码,get它在电子邮件设置下}});letmailOptions={from:'"悲伤日记"<2407488005@qq.com>',//发件人昵称和地址至:data.email,//收件人邮箱主题:'悲伤日记|FriendLinkExchangeRequestReviewResults',//电子邮件主题html:data.内容};//发送邮件transporter.sendMail(mailOptions,(error,info)=>{if(error){returnconsole.log(error);}console.log('邮件发送成功ID:',info.messageId);});}//这里是通过api返回的参数动态填写的nickName,createTime,linkletnickName,createTime,link;昵称='先生严氏博客'createTime='2021-01-2615:20';link='http://blog.lovemysoul.vip'letdata={email:'491324693@qq.com',content:`![](http://blog.lovemysoul.vip/favicon.ico)亲爱的${nickName}

The${link}您在${createTime}申请的交易所好友已获批!已自动创建成功!看看悲伤日记感谢您的支持!

祝你工作顺利,事业有成

——伤心日记

有问题可以关注悲伤日记微信公众号进行协调

![](http://blog.lovemysoul.vip/_assets/beishang.0aa26ed3.jpg)`}sendEmail(data)执行发送nodeapp.js#或者npmrundevDi~收到!打开它并启动计划任务,因为我们发送完电子邮件后,执行完成后任务将关闭。我们需要定时任务一直运行node-schedule来安装npminstallnode-schedule来使用//引入varschedule=require('node-schedule');//定时执行schedule.scheduleJob('10*****',()=>{sendEmail(data)});scheduleexplainsandquotedablogger'sexplanation《Nodejs学习笔记(十二)--- 定时任务(node-schedule)》[2]******┬┬┬┬┬┬│││││|│││││└星期几(0-7)(0或7是星期日)││││└──────月份(1-12)│││└──────────月份的第几天(1-31)││└──────────────────时(0-23)│└──────────────────────────────────分钟(0-59)└──────────────────────────second(0-59,OPTIONAL)  6个占位符从左到右:秒,分,时,日,月,星期几我们来看看以下传入参数的含义:第30次触发每分钟的秒数:'30*****'每小时1分30秒触发:'301****'每天早上1点在1分30秒触发:'3011***'每月第一天1:1:30触发:'30111**'2016年1月1日1:1:30触发:'301112016*'1:1触发:30everyweek1:'3011**1'我们在每分钟的第10秒发送电子邮件以查看邮箱中的所有代码constnodemailer=require('nodemailer');//用于发送邮件的节点插件varschedule=require('node-schedule');functionsendEmail(data){lettransporter=nodemailer.createTransport({service:'QQ',port:465,secureConnection:true,auth:{user:'2407488005@qq.com',pass:'授权码',}});letmailOptions={from:'《悲伤日记》<2407488005@qq.com>',to:data.email,subject:'悲伤日记|FriendLinkExchangeRequestReviewResults',html:data.content};transporter.sendMail(mailOptions,(error,info)=>{if(error){returnconsole.log(error);}console.log('邮件发送成功ID:',info.messageId);});}letnickName,createTime,link;nickName='Mr.严氏博客'createTime='2021-01-2615:20';link='http://blog.lovemysoul.vip'letdata={email:'491324693@qq.com',content:`![](http://blog.lovemysoul.vip/favicon.ico)亲爱的${nickName}

你正在${createTime}的${link}交换好友链接已获批!已自动创建成功!你可以去悲伤日记看看吧感谢您的支持!

祝你工作顺利,事业有成

——伤心日记

如有任何疑问,可关注悲伤日记微信公众号进行协调

![](http://blog.lovemysoul.vip/_assets/beishang.0aa26ed3.jpg)`}日程安排。scheduleJob('10*****',()=>{sendEmail(data)});想给你的女朋友一点浪漫吗?你知道以前的那些吗?玩这个游戏并不容易。继续找轮子。老严在GitHub上找到了一个完美的demo。亲测有效demo:https://github.com/Vincedream...直接clone到gitclonehttps://github.com/Vincedream/NodeMail.git&cdNodeMail安装依赖npminstall修改配置文件,进入根目录下的main.js,然后修改我们刚才说的配置,把所有的节点都填入main.js,注意startDay和local这两个变量记得修改,不然怕被国内虐。你也可以自己定制一些东西,这样会更好。比如邮件的主题EmailSubject发个模板感觉有点过分letmsgTitle=["亲爱的宝贝!周一又是元气满满的一天taimi'ngraleat","小康康!昨天活下来了早上好,三天半的假期我爱你”,“冲冲冲这周的1/2结束了是的!我今天也要开心jet'aime”,“星期四!无论你在哪里,我永远在你的转身距离之内。ichliebedich","哈哈哈,还有半天假期呢!赶紧和老公吃顿大餐σεαγαπ?seagapo","你老公就在你身边,打电话说我爱你就好!哼"]letEmailSubject=msgTitle[newDate().getDay()-1]单身狗暴击*9999999发送时间EmailHour,EmialMinminute可以自己选,比如13:14,5:20等,我不会'这里就不凑热闹了执行这个show操作nodemain.js.jpg)result.png)注解地址[0]https://github.com/nodemailer...[1]https://github.com/node-sched...[2]https://www.cnblogs.com/zhong...