【问题标题】:How to send G Suite email securely with NodeJS?如何使用 NodeJS 安全地发送 G Suite 电子邮件?
【发布时间】:2018-03-25 03:19:12
【问题描述】:

我正在构建一个聊天机器人,以便在收到订单时自动发送电子邮件。
我希望发件人是公司的电子邮件,它启用了自定义域和 G-Suite。

有什么方法可以安全地做到这一点吗?
如果我使用nodemailer 并使用.env 变量作为发件人密码和电子邮件,它是否足够安全?
因为我怀疑把密码放在别人的服务器上。

【问题讨论】:

  • 环境变量通常用于在许多大公司的生产环境中存储机密。有更安全的选择,但最终是关于访问。谁是您将其部署到的盒子上的根?如果不是你,那么这是不安全的。如果任何人都可以访问运行该程序的用户,那么这是不安全的。理想情况下,您部署在您完全控制且只有您有权访问的地方。将机密存储在文件中可能是安全的,但如果您将文件权限弄错,那么盒子上的其他用户可以读取它。
  • @Catalyst 我正在将它部署到 Heroku.. 它安全吗?我刚刚通过 Gmail 发现了 app password。我以前从未使用过它,只知道关于应用程序密码的一两件事,所以我可以在我的应用程序上使用它并且仍然保持安全吗?或者,有什么方法可以通过 API 发送电子邮件(GSuite),所以我不需要告诉密码(只是 api 密钥)?
  • 您在 Heroku 上可能没问题 - 他们采取措施防止跨用户污染,我怀疑即使是这种情况,任何人都可以专门针对您,我无法进入 GSuite 控制台查看- 但我猜你可以通过 api 令牌发送电子邮件。如果此处提到的控制台中没有任何 API 密钥 - support.google.com/a/answer/60757?hl=en,请查看 npmjs.com/package/googleapis 以通过 gmail api 发送。 developers.google.com/gmail/api/quickstart/nodejs
  • @Catalyst 感谢您的回答。无论如何,我在 npmjs 文档以及快速入门文档中都找不到有关发送电子邮件(Gmail)的任何信息。似乎是关于身份验证、谷歌驱动器等(我找不到关于发送电子邮件的信息)
  • 很抱歉没有更直接地指出来自-developers.google.com/gmail/api/v1/reference/users/messages/…的JS示例

标签: node.js email security environment-variables nodemailer


【解决方案1】:

您好,首先 Nodemailer 不允许您使用 G-suite/Gmail 发送电子邮件,或者您可以说 Gmail/Google 不允许使用用户名和密码发送它,您需要使用 OAuth2 方法通过 gmail 发送电子邮件。 供参考:https://nodemailer.com/smtp/oauth2/

let transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 465,
secure: true,
auth: {
    type: 'OAuth2',
    user: 'user@example.com',
    accessToken: 'ya29.Xx_XX0xxxxx-xX0X0XxXXxXxXXXxX0x'
}
});

或者

let transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 465,
secure: true,
auth: {
    type: 'OAuth2',
    user: 'user@example.com'
}
});

transporter.set('oauth2_provision_cb', (user, renew, callback)=>{
let accessToken = userTokens[user];
if(!accessToken){
    return callback(new Error('Unknown user'));
}else{
    return callback(null, accessToken);
}
 });

【讨论】:

    猜你喜欢
    • 2021-02-25
    • 1970-01-01
    • 2021-04-09
    • 2018-03-15
    • 1970-01-01
    • 2017-09-23
    • 2019-03-02
    • 2020-05-27
    • 1970-01-01
    相关资源
    最近更新 更多