从非主电子邮件地址通过 Gmail API 发送

Sending via the Gmail API from non-primary email address

问候 Gmail API 粉丝。

我写了一些非常棒的代码,它们使用 Gmail API 和 JavaScript 巧妙地验证和发送电子邮件。

但是,即使我的脑袋这么大,我也有一个问题。虽然使用 gapi.client.gmail.users.messages.senduserId 设置为 "me" 可以完美地发送电子邮件,但我无法让它从我与我的帐户关联的备用组电子邮件地址发送。

例如,如果我尝试将 userId 更改为 "myalternate@somewhere.com",即使该电子邮件地址与我的 Gmail 帐户相关联,执行也会引发 401 "Login Required" 错误。

Settings screen

知道发生了什么事吗?

下面的一小段代码:

// Stuff gleaned from a form
var headers = {
    'subject': e.data.subject,
    'to': e.data.to,
    'cc': e.data.cc,
    'bcc': e.data.bcc,
    'content-type': 'text/html; charset=utf-8'
};

// grab the email content
message = editor.getContent({format : 'raw'});

// construct the email
var email = '';
for(var header in headers)
    email += header += ': ' + headers[header] + '\r\n';

email += '\r\n' + message;

// This is the bit - changing userId to anything other than 'me' (or the primary email address) kicks error
var sendRequest = gapi.client.gmail.users.messages.send({
    'userId': 'me',
        'resource': {
           'raw': window.btoa(unescape(encodeURIComponent(email))).replace(/\+/g, '-').replace(/\//g, '_')
            }
        });

    return sendRequest.execute(function(){});
}

不要更改 URL 路径中的 "userId"。只需在您的电子邮件中将 "From" header 设置为该地址(并且它必须是您的 Gmail 帐户的经过验证的地址才能起作用)。