我想通过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用不同的发件人发送邮件。我找不到任何相关信息,也没有解决方案。
答案 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