【发布时间】:2019-11-09 23:51:30
【问题描述】:
我正在测试 Nodemailer 向我的个人电子邮件地址发送测试电子邮件的能力。我使用了 Nodemailer 网站上的一些示例代码来保持简单并尽可能少地引入变量。但是,我有两个主要问题:
1) 虽然回复表明邮件已被我的电子邮件接受并带有 250 状态代码,但我在收件箱或垃圾邮件中找不到该邮件。
2) 尽管我的代码中有一个 return 语句,但该函数永远不会完成——也就是说,我的 Postman 中有一个正在进行的“加载”,而在我的终端中它永远不会让我返回到下一行。
我的 nodemailer.js 文件(使用 nodemailer 推荐的测试帐户):
"use strict";
const nodemailer = require("nodemailer");
exports.mailer = async function() {
try {
let testAccount = await nodemailer.createTestAccount();
console.log(testAccount);
// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
host: "smtp.ethereal.email",
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: testAccount.user, // generated ethereal user
pass: testAccount.pass // generated ethereal password
}
});
// send mail with defined transport object
let info = await transporter.sendMail({
from: '"Mike" <foo@gmail.com>', // sender address
to: "myemail@gmail.com", // list of receivers
subject: "Hello ✔", // Subject line
text: "Hello world?", // plain text body
html: "<b>Hello world?</b>" // html body
});
console.log(info);
console.log("Message sent: %s", info.messageId);
// Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
// Preview only available when sending through an Ethereal account
console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
// Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
return;
}
catch(err) {
console.log('error!: ', err);
}
}
调用该函数的路由:
exports.reset = async function(req, res, next) {
try {
const user = await db.User.findOne({
email: req.body.email
});
if (user) {
mailer();
}
}
catch(err) {
console.log(err);
return next({
status: 400,
message: 'No user was found with this email address'
});
}
};
生成的测试帐号:
{ user: 'ffjxqtgqtjcyvnro@ethereal.email',
pass: 'DySZuSDckx2Vb3zzRx',
smtp: { host: 'smtp.ethereal.email', port: 587, secure: false },
imap: { host: 'imap.ethereal.email', port: 993, secure: true },
pop3: { host: 'pop3.ethereal.email', port: 995, secure: true },
web: 'https://ethereal.email' }
回复:
{ accepted: [ 'myemail@gmail.com' ],
rejected: [],
envelopeTime: 673,
messageTime: 1157,
messageSize: 562,
response:
'250 Accepted [STATUS=new MSGID=XRVjPdwpOWUvgMwHXRVjQcwUe2Vy-jP3AAAAAXNi-JPSS9eOph-N0f1.Anw]',
envelope: { from: 'myemail@gmail.com', to: [ 'myemail@gmail.com' ] },
messageId: '<ed8b9a0c-e04c-5a5b-62f9-c2ebea5b5f59@gmail.com>' }
【问题讨论】:
标签: nodemailer forgot-password