×

node.js使用nodemailer模块发送邮件

96
乂千
2017.07.11 19:51* 字数 731

最近做个网站,用户账号申请了,管理员需要核实,核实完毕才能激活用户账号。账号核实后需要通知用户,于是采用了发送电子邮件的方式。

发送电子邮件的服务器使用的是 smtp.qq.com,它的端口是465,这个需要在代码里使用。

另外收电子邮件的服务器是pop.qq.com,端口995,接收电子邮件要用,这个以后说,也可以通过http://openmail.qq.com/ 里面的邮我直接发送邮件,省去很大的功夫。

1.安装,引入nodemailer模块

2.登录qq邮箱,设置-》账号-》POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务-》开启服务-》POP3/SMTP服务,

点击开启,用密保手机发送个短信就开启了,开启后记下它给的密码,在代码里要用。

3.前期准备工作完成,正式上代码。(代码官方都有的,只是我一开始没弄明白配置里的host是什么,所以我就把电脑ip映射出去,填写的外网地址,结果报错 ECONNREFUSED,纠结了很久,翻了些文档,难受。多简单的事啊)

以下是代码:

constnodemailer=require('nodemailer');

lettransporter=nodemailer.createTransport({

host:'smtp.qq.com', //qq发送邮件的服务器

port:465,//端口

secure: true,//启用SSL协议

auth:{

user:'5**************2@qq.com', //你的邮箱账号

pass:'b********************b' //开启POP3/SMTP给的密码,丢了没关系,可以在开启服务的下面有个温馨提示,再次发送短信申请

}

});

letmailOptions={

from:"Fred Foo <534995272@qq.com>",// 发件地址

to:"5*************2@qq.com,5*************3@qq.com",// 收件列表,可以多个,也就是群发,其他邮箱的也行,试过

subject:"Hello world",// 标题

html:"thanks a for visiting! 世界,你好!"// html 内容

};


transporter.sendMail(mailOptions,(error,info)=>{  //开始发送邮件

if(error) {

returnconsole.log(error);

}

console.log('Message %s sent: %s',info.messageId,info.response);

});

ps:发送邮件功能有了,不来搞点什么邮箱验证激活账号,邮箱改密码,邮箱验证码什么的,邮箱真的太好用了。贴图滑稽,方案都想好了,嘿嘿嘿。

4.到此完成,接下来是发牢骚。这个不难,只是一开始没有对方向。翻了很多文档。一开始应该开启qq的smtp服务的,而且代码里的主机应该填写qq接收邮件服务器的地址,这两个没对。而且nodemailer官方文档里也没说吧,或者我没看到,英文太多了 。看到的都是些配置选项。难受,想哭。祝大家少主弯路。

随笔
Web note ad 1