nodemailer 登录无效:535 身份验证失败

时间:2021-01-31 19:45:39

标签: javascript node.js email server nodemailer

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

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');
        }
    });
    
})

module.exports = 路由器;

3 个答案:

答案 0 :(得分:1)

我有一个像 you@yourdomain.com 这样的基于域的电子邮件地址,但我收到了这个错误。

我的解决方案是使用

host: 'smtppro.zoho.in'

代替

host: "smtp.zoho.com"

这在 this 篇文章

中有记录

此外,请务必从此 link 创建应用密码。全面帮助doc

完整的创建传输

let transporter = nodemailer.createTransport({
   host: 'smtppro.zoho.in',
   secure: true,
   port: 465,
   auth: {
      user: YOU@YOURDOMAIN.COM,
      pass: ZOHO_APP_PASSWORD,
   },
});

答案 1 :(得分:0)

在transporter选项中,如果你在auth中使用gmail,则需要添加
auth: { user: 'youremail@gmail.com', pass: 'yourpassword' }
您还必须知道,您是唯一可以向其他用户发送电子邮件的人。
在传输器上发送电子邮件时,from: process.env.EMAIL_ID 只能是您的电子邮件,不能是其他任何人的。
如果您使用 yahoo,发送电子邮件会有点棘手,因为您需要添加应用程序密码才能进行身份验证。

答案 2 :(得分:0)

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