nodemailer 不接受来自发布请求的用户名和密码

问题描述 投票:0回答:1

我是 Stack Overflow 的新手,所以别介意,我正在尝试将电子邮件表单破坏到我的网站中,我正在使用带有 Gmail 帐户的 NodeMailer。我的登录似乎遇到了问题,我不断收到错误消息: 代码:'EAUTH', 响应:'535-5.7.8 用户名和密码不被接受。了解更多信息,请访问 ' + '535 5.7.8 https://support.google.com/mail/?p=BadCredentials b16-20020a05600010d000b0031aef72a021sm1535333wrx.86 - gsmtp', 响应代码:535, 命令:'AUTH PLAIN'

我已验证我的 Gmail 密钥是否正确,我的地址是否正确,我尝试了不同的端口并在不同端口上确保 false/true,我尝试过不同的电子邮件帐户(我目前只有 Gmail 帐户,但我更喜欢使用这个 Gmail )。我很茫然。

我也不断链接到这个页面,我想如果我再次看到它我会尖叫。我看不到打开或关闭不太安全的应用程序的选项。 https://myaccount.google.com/lesssecureapps

我已通过 2fa 密钥在我的 Gmail 帐户上启用了 2fa。我有一个应用程序密钥。我不确定我做错了什么。这是邮件程序的代码、路径和错误。

我已经删除了我的电子邮件,但它公开显示在我的网站上,所以我不担心它在我的代码中,私钥位于一个文件夹中,我已经验证它是否有效。

const nodemailer = require('nodemailer')

// email form
const transporter = nodemailer.createTransport({
  service: 'gmail',
  host: 'smtp.gmail.com',
  port: 587,
  secure: false,
  auth: {
    user: "****@gmail.com",
    pass: privateKeys.gmailKey,
  },
});

app.post('/email', async (req, res) => {
  try {
    // Extract form data
    const {  emailName, emailAddress, emailContent } = req.body;

    console.log(emailName, emailAddress, emailContent)
    
    // Set up email data
    const mailOptions = {
      from: emailAddress,              // sender address from the form
      to: "****@gmail.com",  // your address
      subject: `Message from ${emailName}`, // Subject line
      text: emailContent,      // plain text body
      // html: "<p>Email Content in HTML if needed</p>", // If you want to send HTML content
    };

    // Send the email
    await transporter.sendMail(mailOptions);

    // Send a response to the client
    res.status(200).send("Email sent successfully!");
  } catch (error) {
    console.error("Error sending email:", error);
    res.status(500).send("Failed to send email.");
  }
}
);
node.js express nodemailer
1个回答
0
投票

我将把它留在这里,以便您可以从我的错误中吸取教训。我做的一切都是正确的,但我在错误的 Gmail 帐户上创建了应用程序密码。

© www.soinside.com 2019 - 2024. All rights reserved.