feng xiaohan

使用Node(Express)发送邮件

Node(Express)能创建一个服务端(器),但是创建一个邮件服务器是很困难的,处理邮件与处理传入的请求和响应完全不同。我们基本上没有办法创建自己的邮件服务器,所以一般使用第三方的邮件服务器

第三方邮件服务器:MailChimp、SendGrid 等

下载 Nodemailer

需要利用 nodemailer 发送邮件:

npm install --save nodemailer

使用 SendGrid 作为第三方邮件服务器

使用 SendGrid 作为第三方邮件服务器需要安装nodemailer-sendgrid-transport来与之交互:

npm install --save nodemailer-sendgrid-transport

注意:注册 SendGrid 账号和开启后续服务均需要挂 VPN,连接外网。

初始化传输器

app.js

const nodemailer = require("nodemailer"); // 引入nodemailer
const sendgridTransport = require("nodemailer-sendgrid-transport"); // 引入nodemailer-sendgrid-transport

const transporter = nodemailer.createTransport(
  sendgridTransport({
    auth: {
      api_user: "fxh", // SendGrid用户名
      api_key: "dsafdsfdsf", // SendGrid获取的密钥
    },
  })
); // 设置node传输邮件的方式,并通过sendgridTransport执行(这样可以用nodemailer配置SendGrid)

发送邮件

通过sendMail()发送邮件,它返回一个 Promise:

transporter.sendMail({
  to: userEmail, // 邮件发送的地址(用户的邮件地址)
  from: "shop@node-cm.com", // 发出邮件的地址
  subject: "Signup succeeded", // 邮件主题
  html: "<h1>You successfully signed up!</h1>", // 邮件内容
});