个人博客原文:https://bxm0927.github.io/201...nodemailerNodemailer简介是一个Node.js应用程序模块,可以轻松发送电子邮件。该项目于2010年启动,此后变得相当稳定,是当今大多数Node.js用户的默认电子邮件解决方案。使用#初始化pageage.json文件$npminit#安装依赖$npminstallnodemailer--save#运行nodeapp.jsapp.jsconstnodemailer=require('nodemailer');//打开一个SMTP连接池lettransporter=nodemailer.createTransport({host:'smtp.qq.com',secureConnection:true,//使用SSLport:465,secure:true,//secure:trueforport465,secure:falseforport587auth:{user:'80583600@qq.com',pass:'xxx'//QQ邮箱需要授权码}});//设置邮件内容(谁发什么给谁)letmailOptions={from:'"白小明?"<80583600@qq.com>',//发件人:'xx1@qq.com,xx2@qq.com',//收件人主题:'你好?',//主题text:'ThisisatestemailfromNode.js',//plaintextbodyhtml:'ThisisatestemailfromNode.js',//htmlbody//下面是发送附件,不需要的附件注释掉:[{filename:'test.md',path:'./test.md'},{filename:'content',content:'sendcontent'}]};//使用之前创建的transporter的sendMail方法传递消息对象transporter.sendMail(mailOptions,(error,info)=>{if(error){returnconsole.log(error);}console.log(`消息:${info.messageId}`);console.log(`sent:${info.response}`);});效果预览细节踩坑实践中遇到的问题很多,现罗列如下。如不详尽,请留言交换POP3/SMTP服务,获取授权码(以QQ为例)。启用邮箱的POP3/SMTP服务。QQ邮箱需要使用授权码,不能使用QQ密码;163邮箱可以直接使用163邮箱密码。进入QQ邮箱,设置-账户-开通服务POP3/SMTP服务,生成授权码,现在需要验证短信获取授权码。支持邮箱理论上支持所有主流邮箱,但我只测试了QQ和163,都成功了。其他邮箱如有问题,请留言沟通。535ErrorError:Invalidlogin:535Error:authenticationfailedAuthenticationfailed:可能是账号密码不正确。链接资源池时添加ssl:secureConnection:true,QQ的主机为smtp.qq.com;163的主机是smtp.163.com553ErrorError:Mailcommandfailed:553Mailfrommustequalauthorizeduser发件人和认证邮箱地址不一致auth.user需要和from中的邮箱一致
