Node.js使用Nodemailer发送邮件

简介: Node.js使用Nodemailer发送邮件

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

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

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

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

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

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

在这里插入图片描述

在这里插入图片描述

这里要用到 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 👻" <foo@example.com>', // sender address
    to: "bar@example.com, baz@example.com", // list of receivers
    subject: "Hello ✔", // Subject line
    text: "Hello world?", // plain text body
    html: "<b>Hello world?</b>", // html body
  });

  console.log("Message sent: %s", info.messageId);
  // Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>

  // 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: '2631640352@qq.com',
    pass: '这是邮箱的授权码在邮箱后台生成的'
  }
})

let mailOptions = {
  from: '来自2631640352@qq.com', // 发邮件的账号
  to: '2631640352@qq.com', // 收邮件的账号
  subject: 'hello', // 标题
  html: '<html><h1>world</h1></html>' // 邮寄的内容
}

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

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

相关文章
|
5月前
|
小程序 前端开发 JavaScript
node使用nodemailer在本地可以正常发送邮件,放服务器后无法发送报错
node使用nodemailer在本地可以正常发送邮件,放服务器后无法发送报错
101 0
node使用nodemailer发送邮件
node使用nodemailer发送邮件
|
JavaScript
Node.js:nodemailer发送163邮件
Node.js:nodemailer发送163邮件
245 0
|
资源调度 前端开发 NoSQL
node 使用qq邮箱发送邮件 进行验证码校验
node 使用qq邮箱发送邮件 进行验证码校验
168 0
|
JavaScript
Node.js(三)发送邮件模块(第三方模块)
Node.js(三)发送邮件模块(第三方模块)
103 0
|
JavaScript 安全 网络安全
如何使用nodejs自动发送邮件?
之前用Nodejs做了很多服务端模块, 最近抽空复盘一下, 接下来笔者将介绍如何使用Nodejs来自动向用户发送邮件. 笔者将详细介绍自动发送邮箱的实现方案, 以及通过一个实际的案例来带大家掌握使用nodejs自动发送邮件, 最后会介绍一些实际的应用场景, 来加深对该方案的理解, 达到学以致用的目的.
733 0
|
JavaScript 前端开发
教你node.js 模拟自动发送邮件验证码
我们在开发网站时,发送验证码的功能是必定会遇到的,但发送短信验证码是需要付费的,那么邮箱验证码就是一个白嫖的好办法,今天就来教大家用node如何自动发送邮箱验证码。 接下来跟着我的步骤走,就能轻松完成邮箱的自动发送
423 0
教你node.js 模拟自动发送邮件验证码
|
3月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
83 2
|
3月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
102 4
|
3月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
76 4