我在通过 nodemailer 发送电子邮件时遇到问题 - 生产中的 SMTP(来自另一台主机)
我在服务器(Scaleway Dev)上上传了我的 API,我正在使用 Ubuntu Bionic,并且在测试时注意到它没有发送电子邮件(我需要验证用户)。
起初我以为请求没有到达服务器,但是当我尝试登录时,我得到了“确认您的密码”响应,我检查了 mongoDB 数据库并且用户在那里,但仍然没有确认电子邮件。
我尝试在 localhost 上检查它,认为它可能是 dotenv 依赖项,但它在那里工作,有什么用?
我的服务器上的节点版本是8.10.0 ,我的个人计算机上的节点版本是11.12.0
这些是我的依赖
enter code here
"dependencies": {
"bcrypt": "^3.0.6",
"body-parse": "^0.1.0",
"client-sessions": "^0.8.0",
"connect": "^3.6.6",
"cookie-parser": "~1.4.4",
"cors": "^2.8.5",
"debug": "~2.6.9",
"dotenv": "^8.0.0",
"express": "~4.16.1",
"express-session": "^1.16.1",
"express-validator": "^5.3.1",
"http-errors": "~1.6.3",
"moment": "^2.24.0",
"mongoose": "^5.5.8",
"morgan": "~1.9.1",
"nodemailer": "^6.1.1",
"nodemon": "^1.19.0",
"passport": "^0.4.0",
"pug": "2.0.0-beta11",
"randomstring": "^1.1.5",
"session": "^0.1.0",
"session-mongoose": "^0.5.2"
}
这些使用的选项由我正在使用的主机指定
//this is my transporter constant
const transporter = nodemailer.createTransport({
host: '*different host from the server*',
port: 465,
secure: true,
auth: {
user: my used email(hardcoded),
pass: process.env.EMAILPASS
},
tls: {
rejectUnauthorized: false
}
});
//my email options
let mailOptions ={
from: '"Company Name <noreply@*different host DNS*>',
to: req.body.email,
subject: *subject*
html: `Email Content with confirmation token`
}
//emailing the message itself
transporter.sendMail(mailOptions, (err, info) => {
if(err){
return console.log(err);
}
console.log("message sent");
});
我正在使用此电子邮件生成器 ( https://generator.email/ ) 来快速发送一次性电子邮件。我保存用户后开始发送邮件。
我对我应该做什么感到困惑......感谢任何和所有帮助