使用来自nodejs服务器的gmail api发送邮件

时间:2017-03-20 07:05:42

标签: node.js google-api gmail-api google-client-login

我想要做的是从我的节点js rest api向用户发送邮件和用户密码。我想知道如何使用gmail api和api密钥发送电子邮件。

2 个答案:

答案 0 :(得分:1)

Google于2015年停止了对其所有API的客户端登录(登录和密码)。您无法使用登录名和密码访问Google API。您的用户需要使用Oauth2进行身份验证。

API密钥仅用于访问公共数据。 Gmail是私人用户数据,要求您具有访问权限才能访问数据。

如果您必须使用登录名和密码,我建议您尝试通过SMTP or IMAP服务器。我不是一个节点开发抱歉我无法帮助你。

答案 1 :(得分:0)

如果您想要的是使用Gmail API发送电子邮件而无需进行身份验证,则必须使用服务帐户并使用jwt进行身份验证。

示例代码:

const google = require('googleapis');
const gmail = google.gmail('v1');

const key = require('./mailing-bd0ff2b11546.json')//service acount jwt auth

    let jwtClient = new google.auth.JWT(
        key.client_email,
        null,
        key.private_key,
        ['https://mail.google.com/'],
        '<mail to suplant>'
    );
    function getMessagesList(data) {
        return new Promise((resolve, reject) => {


            jwtClient.authorize(function (err, tokens) {
                if (err) {
                    console.error(err);
                } else {
                    gmail.users.messages.list({
                        auth: jwtClient,
                        userId: 'me',
                        labelIds: 'INBOX'
                    }, (err, messageList) => {

                   ...
                   ...
                   ...

以下是文档的一些链接:Creating a service account

stackoverflow example