nodemailer 登录无效:535 身份验证失败
nodemailer Invalid login: 535 Authentication Failed
我正在尝试在我的节点应用程序中使用 nodemailer(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');
}
});
})
module.exports = 路由器;
在transporter选项中,如果你在auth上使用gmail,你需要添加
auth: { user: 'youremail@gmail.com', pass: 'yourpassword' }
您还必须知道,您是唯一可以向其他用户发送电子邮件的人。
在传输器上发送电子邮件时,from: process.env.EMAIL_ID
只能是您的电子邮件,不能是其他任何人的。
如果你使用yahoo,发送邮件会比较棘手,因为你需要添加应用程序密码才能进行身份验证。
我在我的 Zoho 帐户中启用了双因素身份验证,然后我在安全选项卡下从 here 创建了一个单独的应用程序密码,然后将此密码用于 nodemailer。成功了。
我有一个像你这样的基于域的电子邮件地址@yourdomain.com,但我收到了这个错误。
我的解决方案是使用
host: 'smtppro.zoho.in'
代替
host: "smtp.zoho.com"
这在 this 文章
中有记载
创建一个应用密码
完全创建传输
let transporter = nodemailer.createTransport({
host: 'smtppro.zoho.in',
secure: true,
port: 465,
auth: {
user: YOU@YOURDOMAIN.COM,
pass: ZOHO_APP_PASSWORD,
},
});
我正在尝试在我的节点应用程序中使用 nodemailer(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');
}
});
})
module.exports = 路由器;
在transporter选项中,如果你在auth上使用gmail,你需要添加
auth: { user: 'youremail@gmail.com', pass: 'yourpassword' }
您还必须知道,您是唯一可以向其他用户发送电子邮件的人。
在传输器上发送电子邮件时,from: process.env.EMAIL_ID
只能是您的电子邮件,不能是其他任何人的。
如果你使用yahoo,发送邮件会比较棘手,因为你需要添加应用程序密码才能进行身份验证。
我在我的 Zoho 帐户中启用了双因素身份验证,然后我在安全选项卡下从 here 创建了一个单独的应用程序密码,然后将此密码用于 nodemailer。成功了。
我有一个像你这样的基于域的电子邮件地址@yourdomain.com,但我收到了这个错误。
我的解决方案是使用
host: 'smtppro.zoho.in'
代替
host: "smtp.zoho.com"
这在 this 文章
中有记载 创建一个应用密码完全创建传输
let transporter = nodemailer.createTransport({
host: 'smtppro.zoho.in',
secure: true,
port: 465,
auth: {
user: YOU@YOURDOMAIN.COM,
pass: ZOHO_APP_PASSWORD,
},
});