通过gmail API发送电子邮件时更改地址

时间:2019-09-13 17:09:43

标签: node.js email google-api gmail-api

我想通过gmail API发送邮件。我有一个到目前为止可以使用的功能,但是我的问题是我不知道如何更改发件人地址。我的邮件始终以授权API访问的用户身份发送。

所以我希望我的邮件是从.mail @ example.com用以下代码发送的:

function sendSampleMail(auth, cb) {
  let gmailClass = google.gmail('v1');

  let emailLines = [];

  emailLines.push('From: from.mail@example.vom');
  emailLines.push('To: to.mail@example.com');
  emailLines.push('Content-type: text/html;charset=iso-8859-1');
  emailLines.push('MIME-Version: 1.0');
  emailLines.push('Subject: this would be the subject');
  emailLines.push('');
  emailLines.push('And this would be the content.<br/>');
  emailLines.push('The body is in HTML so <b>we could even use bold</b>');

  const email = emailLines.join('\r\n').trim();

  let base64EncodedEmail = new Buffer.from(email).toString('base64');
  base64EncodedEmail = base64EncodedEmail.replace(/\+/g, '-').replace(/\//g, '_');

  gmailClass.users.messages.send(
    {
      auth: auth,
      userId: 'me',
      resource: {
        raw: email
      }
    },
    cb
  );
}

我不知道是否有可能通过Google API用不同的发件人发送邮件。我找不到任何相关信息,也没有解决方案。

1 个答案:

答案 0 :(得分:1)

您不能以身份验证用户的身份发送电子邮件(或发出任何请求),因为您没有任何模拟权限。

如果您是G Suite管理员,则可以使用具有域范围内授权[3]的服务帐户[1] [2],这将授予您访问权限,以模拟您域中的任何Gmail帐户。选择一个项目后,您可以在Cloud Platform上创建一个服务帐户,从中可以下载凭证JSON文件。并使用JSON Web令牌方法[4]使用服务帐户JSON对应用程序进行授权。

[1] https://cloud.google.com/iam/docs/service-accounts

[2] https://cloud.google.com/iam/docs/understanding-service-accounts

[3] https://developers.google.com/admin-sdk/directory/v1/guides/delegation

[4] https://github.com/googleapis/google-auth-library-nodejs#json-web-tokens