对于登录注册或者一些监控、数据处理的定时任务,可能需要发送邮件的能力。
今天分享一下使用node server发送邮件的流程。
发送邮件的过程是,你的客户端给邮件服务器发信息,然后邮件服务器发给目标邮件服务器,目标邮件服务器再通知到客户端,目标用户就收到了
如果我们使用qq客户端可以直接用账号密码登录自己的邮箱。使用node server发邮件,相当于第三方客户端。第三方客户端指的就是除了qq自己的客户端外的其他客户端。
发邮件流程变成了
这里有个问题,使用qq客户端可以直接通过账号密码登录邮箱,第三方客户端使用账号密码登录肯定不安全,因此qq邮箱提供了授权码,第三方客户端可以通过授权码以用户身份访问邮箱服务器。由于授权码的权限可以控制,比如可以关闭服务,第三方客户端就无法使用授权码登录了,因此授权码比较安全。
node server发送邮件时候就是一个第三方客户端。使用nodejs发送邮件的操作流程是:
- 从qq邮箱获取授权码
- 安装nodemailer
发送邮件
Nodemailer模块
使用npm下载安装Nodemailer模块:
npm install nodemailer
发送电子邮件
下面的例子,使用QQ邮箱发送邮件,还需另外安装两个辅助模块,用于配置邮箱账号:
npm install nodemailer-smtp-transport nodemailer-wellknown --save
示例:
var nodemailer = require('nodemailer'); var smtpTransport = require('nodemailer-smtp-transport'); var wellknown = require("nodemailer-wellknown"); var config = wellknown("QQ"); config.auth = { user:'你的账号@qq.com', pass:'你的密码' // QQ邮箱此处使用授权码 } var transporter = nodemailer.createTransport(smtpTransport(config)); var mailOptions = { from: '你的账号@qq.com', // 你的QQ邮箱网址,必须与上面配置一致 to: 'myfriend@qq.com', subject: 'Node.js邮件发送测试', text: 'test!' }; transporter.sendMail(mailOptions, function(error, info){ if (error) { console.log(error); } else { console.log('Email sent: ' + info.response); } });
多个接收人
要向多个收件人发送电子邮件,在mailOptions对象的“To”属性中添加邮箱地址,以逗号分隔:
var mailOptions = { from: '你的账号@gmail.com', to: 'myfriend@yahoo.com, myotherfriend@yahoo.com', subject: 'Node.js邮件发送测试', text: 'test!' }
发送HTML
var mailOptions = { from: 'youremail@gmail.com', to: 'myfriend@yahoo.com', subject: 'Sending Email using Node.js', html: '<h1>Welcome</h1><p>That was easy!</p>' }
本文共 487 个字数,平均阅读时长 ≈ 2分钟
评论 (0)