【问题标题】:Having trouble sending email with nodemailer and nodejs使用 nodemailer 和 nodejs 发送电子邮件时遇到问题
【发布时间】:2022-06-13 14:09:49
【问题描述】:

postman screenshot terminal in VS Code

这是我的 sendEmail.js 代码:

const nodemailer = require("nodemailer");

const sendEmail = async (email, subject, text) => {
    try {
        const transporter = nodemailer.createTransport({
            host: process.env.HOST,
            service: process.env.SERVICE,
            port: 587,
            secure: true,
            auth: {
                user: process.env.USER,
                pass: process.env.PASS,
            },
        });
    await transporter.sendMail({
            from: process.env.USER,
            to: email,
            subject: subject,
            text: text,
        });

        console.log("email sent sucessfully");
    } catch (error) {
        console.log(error, "email not sent");
    }
};

module.exports = sendEmail;

我按照教程“https://dev.to/cyberwolve/how-to-implement-password-reset-via-email-in-node-js-132m”Forgot password.. 任何建议将不胜感激!

【问题讨论】:

  • 带有错误消息的屏幕截图链接在屏幕顶部。
  • 您是否运行本地电子邮件服务器?或者你为什么使用你的环回地址?错误ECONNREFUSED 非常清楚。
  • 我使用的是 Gmail 电子邮件地址
  • 那么,你为什么使用环回地址而不是gmail服务器?
  • 我不明白你的意思。你能解释一下吗?

标签: javascript node.js nodemailer


【解决方案1】:

在撰写本文时,Google 不再支持不太安全的应用程序。而且你不能使用你的谷歌账户密码。

您必须生成一个新的应用密码。

只有在开启两步验证的情况下,应用密码才有效。按照以下步骤获取应用密码

  1. 转到https://myaccount.google.com/security
  2. 启用 2FA
  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"
    }
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 2022-08-18
    • 2023-02-11
    • 2022-07-27
    相关资源
    最近更新 更多