通过OAuth 2.0 Playground发送Gmail

时间:2019-07-13 05:52:21

标签: node.js gmail nodemailer oauth2-playground

我编写了用于通过OAuth2将我的gmail帐户中的邮件发送到另一个帐户的代码。在OAuth2中,我们需要在https://developers.google.com/oauthplayground/上生成的refreshToken和accessToken,由此生成的accessToken将在3600秒后失效。我想要一些将生成accessToken的代码。

我编写了代码,直接从该站点https://developers.google.com/oauthplayground/放置refreshToken和acessToken。

// javascript代码主文件app.js

async function sendEmail() {
    const nodemailer = require("nodemailer");
    const { google } = require("googleapis");
    const OAuth2 = google.auth.OAuth2;

    const smtpTransport = nodemailer.createTransport({
        service: "gmail",
        auth: {
            type: "OAuth2",
            user: "***************@gmail.com", 
            clientId: "***********.apps.googleusercontent.com",
            clientSecret: "*************",
            refreshToken: "**************",
            accessToken: "********************************"
        }
    });

    const mailOptions = {
        from: "**************@gmail.com",
        to: "**************@gmail.com",
        subject: "Hello",
        generateTextFromHTML: true,
        html: "<h1>TEST MAIL SAYS HELLO</h1>"
    };
       smtpTransport.sendMail(mailOptions, (error, response) => {
         error ? console.log(error) : console.log(response);
         smtpTransport.close();
        });
     } 
 sendEmail();

这工作正常,但我希望使用某些代码生成该accessToken。

1 个答案:

答案 0 :(得分:0)

为了获取访问令牌和刷新令牌,您将需要在应用程序中的某些时候输入您的凭据。这将需要某种前端部分。在后端,您将使用googleapis节点库中的auth包获取这些凭据并生成所需的令牌。

另一种方法是创建一个服务帐户,该服务帐户将代表您的帐户发送电子邮件。任何人要使用Gmail或仅自己发送电子邮件,您想要什么流程?