我的代码在我的localhost中工作如下。我试图做的是把我的密码放在我的.envlocal中,但它不起作用。
工作代码
export default function (req, res) {
let nodemailer = require('nodemailer')
const transporter = nodemailer.createTransport({
port: 465,
host: "smtp.gmail.com",
auth: {
user: 'myEmail@gmail.com',
pass: 'password123',
},
secure: true,
});
const mailData = {
from: 'keshibatmail@gmail.com',
to: 'kensukeshibata@gmail.com',
subject: `Message From ${req.body.name}`,
text: req.body.message + " | Sent from: " + req.body.email,
html: `<div>${req.body.message}</div><p>Sent from: ${req.body.email}</p>`
}
transporter.sendMail(mailData, function (err, info) {
if(err)
console.log(err)
else
console.log(info);
})
console.log(req.body)
res.send('success')
}
我尝试了什么我的next.js是
“下一页”:“10.x”
,所以我应该可以使用这个,因为我的next.js高于9.4 https://nextjs.org/docs/api-reference/next.config.js/environment-variables
我创建了.env.local文件NEXT_PUBLIC_PASSWORD=password123
然后process.env.NEXT_PUBLIC_PASSWORD
我也试过不用NEXT_PUBLIC_。
我得到这个错误。响应:'535-5.7.8不接受用户名和密码。
const transporter = nodemailer.createTransport({
port: 465,
host: "smtp.gmail.com",
auth: {
user: myEmail@gmail.com,
pass: process.env.NEXT_PUBLIC_PASSWORD,
},
secure: true,
});
1条答案
按热度按时间kx5bkwkv1#
也许这可以帮助其他人。
首先,你正在使用一个API,因为我读到:
这意味着您正在显示的代码正在服务器中运行。
在这种情况下,您不需要在
env
var中使用NEXT_PUBLIC_
。只有当你想在浏览器中暴露变量时,才需要这样做。在这种情况下,这段代码不是在浏览器中运行,而是在服务器中运行。此外,重要的是,不要在浏览器中暴露变量(如密码),因为所有人都会看到它们。
还有一件事,我在
.env.local
文件中使用电子邮件的密码时遇到了类似的问题。我意识到我在句子的最后放了一个空格。我有
MAIL_PASS="xxx"
,行尾留有一个空格。我删除了空间,正确的密码被拿走了。