最近做个网站,用户账号申请了,管理员需要核实,核实完毕才能激活用户账号。账号核实后需要通知用户,于是采用了发送电子邮件的方式。
发送电子邮件的服务器使用的是 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官方文档里也没说吧,或者我没看到,英文太多了 。看到的都是些配置选项。难受,想哭。祝大家少主弯路。