面试题答案
一键面试在Node.js中,可以使用nodemailer
库来发送邮件,并通过try...catch
块捕获错误。以下是一个实现邮件发送及重试机制的示例代码:
- 首先安装
nodemailer
:
npm install nodemailer
- 示例代码如下:
const nodemailer = require('nodemailer');
// 创建一个邮件传输器
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'your_email@gmail.com',
pass: 'your_password'
}
});
// 邮件内容
const mailOptions = {
from: 'your_email@gmail.com',
to: 'recipient_email@example.com',
subject: 'Test Email',
text: 'This is a test email.'
};
// 最大重试次数
const maxRetries = 3;
// 当前重试次数
let retryCount = 0;
function sendEmailWithRetry() {
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
if (retryCount < maxRetries) {
retryCount++;
console.log(`邮件发送失败,重试 ${retryCount}/${maxRetries}`);
setTimeout(sendEmailWithRetry, 1000 * retryCount); // 每次重试间隔逐渐增加
} else {
console.log('邮件发送失败,达到最大重试次数');
}
} else {
console.log('邮件发送成功: ', info.response);
}
});
}
sendEmailWithRetry();
在上述代码中:
- 我们使用
nodemailer
创建了一个邮件传输器,并设置了相关的邮件选项。 - 定义了最大重试次数
maxRetries
和当前重试次数retryCount
。 - 在
sendEmailWithRetry
函数中,通过transporter.sendMail
发送邮件,并在回调中捕获错误。如果发送失败且未达到最大重试次数,则进行重试,并通过setTimeout
设置每次重试的间隔逐渐增加,以避免短时间内频繁重试。当达到最大重试次数仍失败时,输出提示信息。如果发送成功,则输出成功信息。