如何在Node.js中使用Gmail通过Nodemailer发送电子邮件?

6

我按照文档操作,但谷歌说该应用程序的安全级别不够安全。而且现在已经没有允许访问此类应用程序的选项了。

  const nodemailer = require('nodemailer');


let mailTransporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
        user: 'xyz@gmail.com',
        pass: '*************'
    }
});

let mailDetails = {
    from: 'xyz@gmail.com',
    to: 'abc@gmail.com',
    subject: 'Test mail',
    text: 'Node.js testing mail for GeeksforGeeks'
};

mailTransporter.sendMail(mailDetails, function(err, data) {
    if(err) {
        console.log('Error Occurs');
    } else {
        console.log('Email sent successfully');
    }
});
2个回答

12

4
在撰写本文时,Google不再支持“较不安全的应用程序”,您不能使用您的Google账户密码。
您需要生成一个新的应用程序密码。
只有在打开了两步验证时,应用程序密码才能起作用。按照以下步骤获取应用程序密码:
  1. 前往https://myaccount.google.com/security
  2. 启用双重身份验证
  3. 为电子邮件创建应用程序密码
  4. 将该密码(16个字符)复制到Nodemailer auth中的pass参数中。
const client = nodemailer.createTransport({
    service: "Gmail",
    auth: {
        user: "username@gmail.com",
        pass: "Google-App-Password-Without-Spaces"
    }
});

client.sendMail(
    {
        from: "sender",
        to: "recipient",
        subject: "Sending it from Heroku",
        text: "Hey, I'm being sent from the cloud"
    }
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接