Node.js使用Nodemailer发送邮件

logo

电子邮件是—种用电子手段提供信息交换的通信方式,是互联网应用最广的服务。通过网络的电子邮件系统,用户可以以非常低廉的价格(不管发送到哪里,都只需负担网费)、非常快速的方式(几秒钟之内可以发送到世界上任何指定的目的地),与世界上任何一个角落的网络用户联系。

在很多项目中,我们都会遇到邮件注册,邮件反馈等需求。在 node 中收发电子邮件也非常简单,因为强大的社区有各种各样的包可以供我么直接使用。Nodemailer 包就可以帮助我们快速实现发送邮件的功能。

Nodemailer是一个简单易用的Node.js邮件发送组件。

官网地址:https://nodemailer.com

GitHub地址:https://github.com/nodemailer/nodemailer

为了实现这个功能,你首先要有一个邮箱;由于需要使用 SMTP 方式发送,你还需要开启相关功能。你可以登录你的邮箱,然后开启这个设置,以 QQ 邮箱为例:设置->账户->开启服务 (选择POP3/SMTP服务)->点击开启 (需要发送短信开启)->授权码生成。

Node.js使用Nodemailer发送邮件_第1张图片

Node.js使用Nodemailer发送邮件_第2张图片

这里要用到 nodemailer,需要自行安装:

npm install nodemailer

打开官网可以看见一个小例子:

"use strict";
const nodemailer = require("nodemailer");

// async..await is not allowed in global scope, must use a wrapper
async function main() {
     
  // Generate test SMTP service account from ethereal.email
  // Only needed if you don't have a real mail account for testing
  let testAccount = await nodemailer.createTestAccount();

  // create reusable transporter object using the default SMTP transport
  let transporter = nodemailer.createTransport({
     
    host: "smtp.ethereal.email",
    port: 587,
    secure: false, // true for 465, false for other ports
    auth: {
     
      user: testAccount.user, // generated ethereal user
      pass: testAccount.pass, // generated ethereal password
    },
  });

  // send mail with defined transport object
  let info = await transporter.sendMail({
     
    from: '"Fred Foo " ', // sender address
    to: "[email protected], [email protected]", // list of receivers
    subject: "Hello ✔", // Subject line
    text: "Hello world?", // plain text body
    html: "Hello world?", // html body
  });

  console.log("Message sent: %s", info.messageId);
  // Message sent: 

  // Preview only available when sending through an Ethereal account
  console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
  // Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
}

main().catch(console.error);

这个小例子是生成了 Ethereal 的测试账户进行邮件发送演示的。但是这多没意思,我们来使用自己的邮箱来发送邮件。

const nodemailer = require('nodemailer');

let transporter = nodemailer.createTransport({
     
  service: 'QQ', // 发给QQ邮箱
  port: 465, // 发邮箱的端口号
  secureConnection: true, // 使用SSL加密传输
  auth: {
      // 权限认证
    user: '[email protected]',
    pass: '这是邮箱的授权码在邮箱后台生成的'
  }
})

let mailOptions = {
     
  from: '来自[email protected]', // 发邮件的账号
  to: '[email protected]', // 收邮件的账号
  subject: 'hello', // 标题
  html: '

world

'
// 邮寄的内容 } transporter.sendMail(mailOptions, (err, info) => { if (!err) { console.log('邮件已经发生完成') } })

如果是用短信验证码的话,无疑成本高,因为短信是收费的。想想做一个学习用的网站,还是选择邮件发送验证码吧。

你可能感兴趣的:(JavaScript,nodejs)