使用先前存储在数据库中的凭据执行发送电子邮件的 API 端点。 (使用 Gmail REST API)
Posted
技术标签:
【中文标题】使用先前存储在数据库中的凭据执行发送电子邮件的 API 端点。 (使用 Gmail REST API)【英文标题】:API endpoint to execute send emails using the credentials previous stored in the database. (Using Gmail REST API) 【发布时间】:2021-02-09 02:54:57 【问题描述】:我有一个任务,他们要求我使用 OAuth 2.0 获取用户凭据并将其保存在数据库中(例如 MongoDB)。我能够完成这一步。
第二个任务是让 API 端点使用之前存储的凭据执行发送电子邮件。 (使用 Gmail REST API)。我正在努力完成第二个任务,并且一直在互联网上搜索。
PS:我是用 Nodejs 做的
【问题讨论】:
【参考方案1】: 文档:https://developers.google.com/gmail/api/quickstart/nodejs 设置 Gmail REST API 并获取您的 clientId 和客户端密码 编写一个发送邮件的函数 我用过nodemailar的例子,应该和gmail差不多var nodemailer = require('nodemailer');
var crypto = require('crypto');
let transporter = nodemailer.createTransport(
host: 'smtp.sendgrid.net',
port: 465,
auth:
user: 'apikey',
pass: 'Your Key'
);
function generateVerificationToken()
return crypto.randomBytes(16).toString('hex');
exports.addUserEmail = function (req, res)
Users.find( email: req.body.email , (err, users) =>
if (err) res.send("Err"); return
if (users.length == 0)
var user = new Users(req.body);
user.verification.verification_token = generateVerificationToken();
user.save(function (err, email)
if (err)
res.send(err);
sendVerificationEmail(req, user.verification.verification_token, email.email, (err) =>
if (err) console.log(err); return res.status(500).send( msg: err.message );
res.status(200).send(
'A verification email has been sent to ' : email.email
);
);
);
else
res.status(400).send( Error : 'Invalid Request',
Error : 'This email is already Registered'
);
);
;
function sendVerificationEmail(req, token, email, cb)
let emailText = 'Hello,\n\n' + 'Please verify your account by clicking the link: \nhttp:\/\/' + req.headers.host + '\/user\/verify\/?token=' + token + '&email=' + email + '.\n';
var mailOptions =
from: 'donotreply@Express-Server.com',
to: email,
subject: 'Account Verification Token',
text: emailText
;
transporter.sendMail(mailOptions, function (err)
cb(err);
);
在你的路线中
app.route('/user/register')
.post(users.addUserEmail);
【讨论】:
以上是关于使用先前存储在数据库中的凭据执行发送电子邮件的 API 端点。 (使用 Gmail REST API)的主要内容,如果未能解决你的问题,请参考以下文章
使用流明发送电子邮件,而不在 env 文件中设置 smtp 凭据
如何使用存储在 Excel 中的地址向多个收件人发送电子邮件?
无法使用 python SDK 在 ECS fargate 作业上发送邮件,并在另一个 aws 帐户中使用经过验证的 SES 的凭据
DocuSign 集成。是不是可以在未经用户同意的情况下获得身份验证令牌。我想使用我的凭据在内部发送 docusign 信封电子邮件 [关闭]