Nodemailer 使用Gmail发送邮件

第一步安装 nodemailer

npm install nodemailer

第二步 创建Google 项目

2.1打开下面地址

已启用的 API 和服务

2.2创建新项目

1660446709678

2.3输入项目信息

1660446709678

2.4创建完成后启用API

1660446709678

2.5输入 gmail 搜索并选择 Gmail API

1660446709678

2.6点击启用API

1660446709678

2.7点击创建凭据

1660446709678 1660446709678 1660446709678 1660446709678

2.8创建Oauth凭据

重定向URL 中输入 https://developers.google.com/oauthplayground 1660446709678

2.9创建完成

1660446709678

2.10然后点击凭据Tab,并编辑刚创建的凭据

1660446709678

2.11复制客户端ID与客户端密钥供后续使用

1660446709678

2.12点击 OAuth 同意屏幕添加测试用户

1660446709678

2.13将当前用户加入

1660446709678

2.14创建完成后用户列表中将会看到

1660446709678

2.15打开地址 https://developers.google.com/oauthplayground

配置前面复制的客户端ID与客户端密钥,然后选择gmail Api 并点击Authorize APIs 按钮 1660446709678

2.16然后选择当前登陆的账号 以获取授权

1660446709678

账号授权时如果出现 这种提示 则是因为 创建的应用未设置测试用户,将当前用户加入测试用户列表中即可(步骤:2.13,2.14,2.15) 1660446709678

2.17获取Token

1660446709678 因为这只是测试 App 所以会有提示,点击继续即可 1660446709678

2.18同意授权

1660446709678

2.19同意授权后会重新回到页面 https://developers.google.com/oauthplayground 点击按钮获取Token

1660446709678

2.20判断右侧出现 HTTP/1.1 200 OK 且 相关信息都已显示,复制左侧 RefreshToken 与 Access token

1660446709678 到了这一步我们就创建完成 所需要的信息 下一步就进行代码编写

第三步 编写邮件代码

const express = require("express");
const nodemailer = require("nodemailer");
const app = express();
const port = 3333;

app.get("/", (req, res) => {
  const transporter = nodemailer.createTransport({
    host: "smtp.gmail.com",
    port: 465,
    secure: true,
    auth: {
      type: "OAuth2",
      user: "test@gmail.com",
      clientId:
        "344551453406-rqk1a539bljgc9ldt9gv2kfbv3ud7l9u.apps.googleusercontent.com",
      clientSecret: "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",
      refreshToken:
        "1//0412Uzn4225S4CgYIARAAGAQSNwF-L9IrZNMaQswZxgQ_fvrrS70UAH9_e03DP7_c7MJCenpjY4WZPYagEP31LQ-SRUKuhe86zq8",
      accessToken:
        "ya29.A0AVA9y1sQzoQjsd1wjcHGa5RYik1Bm1yXMWdMx3_Ddwyxwn6sA96sioaCSOVo4UaztU2tTNP4M36okz4JzTyQpR7hz3rpmt3jEGGO_hIwto52m8qn2_sPfXVIVW0ur1otQnMpToD5_T_fkiDGhPdG_OIGNhOyYUNnWUtBVEFTQVRBU0ZRRTY1ZHI4VkpkVlBFZEdBQnpoeVVkbzQta2FJQQ0163",
    },
  });
  transporter.sendMail({
    from: "test@gmail.com",
    to: "test@qq.com",
    subject: "Gmail 测试邮件",
    html: "Gmail 测试邮件 内容",
  });
  res.send("Hello World!");
});

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`);
});

运行 文件 node app.js 并访问 localhost:3333 过一会我们就能收到 Gmail 发送的邮件了 1660446709678

第四部 定时刷新Token

const res = await ctx.curl("https://accounts.google.com/o/oauth2/token", {
  method: "POST",
  contentType: "json",
  dataType: "json",
  data: {
    client_id: clientId,
    client_secret: clientSecret,
    refresh_token: refreshToken,
    grant_type: "refresh_token",
  },
});
const { access_token } = res.data || {};

大功告成

本文由一文多发运营工具平台 EaseWriting 发布

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值