Javascript 节点电子邮件程序登录无效:535身份验证失败

Javascript 节点电子邮件程序登录无效:535身份验证失败,javascript,node.js,email,server,nodemailer,Javascript,Node.js,Email,Server,Nodemailer,我正在尝试在我的节点应用程序中使用nodeEmailer(npm软件包)通过联系人页面发送电子邮件。它给了我这个535身份验证失败的错误,同时我可以向您保证我的电子邮件和密码是绝对正确的。 var express = require('express'); var router = express.Router(); const nodemailer = require("nodemailer"); require('dotenv').config(); router.ro

我正在尝试在我的节点应用程序中使用nodeEmailer(npm软件包)通过联系人页面发送电子邮件。它给了我这个535身份验证失败的错误,同时我可以向您保证我的电子邮件和密码是绝对正确的。

var express = require('express');
var router = express.Router();
const nodemailer = require("nodemailer");
require('dotenv').config();

router.route('/')
    .post((req, res)=>{
        const emailData=req.body;
        let transporter = nodemailer.createTransport({
            host: "smtp.zoho.in",
            port: 465,
            secure: true, // true for 465, false for other ports
            auth: {
                user: process.env.EMAIL_ID, // generated ethereal user
                pass: process.env.EMAIL_PASS, // generated ethereal password
            },
            tls:{
                rejectUnauthorized: false
            }
        });
        
    let info = transporter.sendMail({
        from: process.env.EMAIL_ID, // sender address
        to: process.env.EMAIL_ID, // list of receivers
        subject: "Quengenesis: Contact Message", // Subject line
        text: `
            From: ${emailData.fName} ${emailData.lName}
            Email: ${emailData.email}
            Phone: ${emailData.phone}
            Message: ${emailData.message}`, // plain text body
        // html: "<b>Hello world?</b>", // html body
    });
    
    // console.log("Message sent: %s", info.messageId);
    // console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
    // verify connection configuration
    transporter.verify(function(err, success) {
        if (err) {
            res.send('There is a problem in the server, please try again later '+ err);
        } 
        else {
            res.send('Your message was sent successfully');
        }
    });
    
})
var express=require('express');
var router=express.router();
const nodemailer=require(“nodemailer”);
require('dotenv').config();
router.route(“/”)
.post((请求、回复)=>{
const emailData=req.body;
让transporter=nodeEmailer.createTransport({
主机:“smtp.zoho.in”,
港口:465,
安全:true,//对于465为true,对于其他端口为false
认证:{
用户:process.env.EMAIL\u ID,//生成的ethereal用户
pass:process.env.EMAIL\u pass,//生成ethereal密码
},
tls:{
拒绝:错误
}
});
let info=transporter.sendMail({
发件人:process.env.EMAIL\u ID,//发件人地址
收件人:process.env.EMAIL\u ID,//收件人列表
主题:“Quengenesis:联系信息”//主题行
正文:`
发件人:${emailData.fName}${emailData.lName}
电子邮件:${emailData.Email}
电话:${emailData.Phone}
消息:${emailData.Message}`,//纯文本正文
//html:“你好,世界?”,//html正文
});
//console.log(“发送的消息:%s”,info.messageId);
//log(“预览URL:%s”,nodeEmailer.getTestMessageUrl(info));
//验证连接配置
验证(功能(错误、成功){
如果(错误){
res.send('服务器有问题,请稍后再试'+错误);
} 
否则{
res.send(“您的邮件已成功发送”);
}
});
})

module.exports=路由器

在transporter选项中,如果您在认证时使用gmail,则需要添加
auth:{user:'youremail@gmail.com,传递:“您的密码”}

您还必须知道,您是唯一可以向其他用户发送电子邮件的人。
在传送站发送电子邮件时,发件人:process.env.email\u ID只能是您的电子邮件,不能是其他人的。

如果您使用yahoo,发送电子邮件会有点棘手,因为您需要添加应用程序密码才能进行身份验证。

我在Zoho帐户中启用了双因素身份验证,然后在“安全”选项卡下创建了一个单独的应用程序密码,然后将此密码用于NodeEmailer。它成功了。

如果您再次正确地阅读我的代码,您会意识到,我使用的是一封商业电子邮件。它既不是Gmail也不是雅虎。你检查过我在代码中使用的主机了吗?我想你不太了解环境变量。我明白了。我读了一篇关于medium的文章,我发现zoho服务需要一个应用程序密码。我没有使用双因素身份验证,因此我不需要生成另一个密码,但是,我尝试了使用新密码,也删除了环境变量,但错误仍然存在。您还需要知道,您是唯一可以发送电子邮件的人。发件人地址只能是您的电子邮件地址。是的,我知道,我向您保证发件人地址只能是我的电子邮件地址。这里process.env.EMAIL_ID仅分配给我用Zoho创建的业务电子邮件地址。