Javascript 如何在NodeEmailer中正确发送电子邮件并关闭smtp连接?
在我的Javascript 如何在NodeEmailer中正确发送电子邮件并关闭smtp连接?,javascript,node.js,smtp,nodemailer,Javascript,Node.js,Smtp,Nodemailer,在我的Node.js应用程序中,我使用库通过SMTP发送电子邮件 正如您可以从代码中看到的,我有一个名为employees的数组。该阵列有2000个电子邮件地址 当我使用下面的代码时,应用程序只发送10封电子邮件,然后引发错误error:Invalid greeting。response=421 4.7.0 mailrelay1.*.*.*错误:来自xxx.xx.xx.xxx的连接太多 在我看来,每个发送操作都不会关闭通道,即使我明确指定了.close()方法 const express = r
Node.js
应用程序中,我使用库通过SMTP
发送电子邮件
正如您可以从代码中看到的,我有一个名为employees
的数组。该阵列有2000个电子邮件地址
当我使用下面的代码时,应用程序只发送10封电子邮件,然后引发错误error:Invalid greeting。response=421 4.7.0 mailrelay1.*.*.*错误:来自xxx.xx.xx.xxx的连接太多
在我看来,每个发送操作都不会关闭通道,即使我明确指定了.close()
方法
const express = require('express');
const nodemailer = require('nodemailer');
const forAsync = require('for-async');
let transporter = nodemailer.createTransport({
host: process.env.SMTP_HOST,
port: parseInt(process.env.SMTP_PORT, 10),
secure: false,
tls: {
rejectUnauthorized: false
}
});
const router = express.Router();
router.post('/employees', function(request, response) {
const employees = [***];
forAsync(employees, (employee) => {
return new Promise(resolve => {
// Setup email options.
const options = {
from: process.env.EMAIL,
to: employee,
subject: "System Alert",
html: html
};
return new Promise((resolve, reject) => {
setTimeout(() => {
transporter.sendMail(options, (error) => {
if(error) {
console.log(error);
reject(error);
} else {
resolve();
}
});
transporter.close();
}, 5000);
}).then(() => {
resolve();
}).catch(error => {
console.log(error);
});
});
});
});
您可能需要考虑发送一封电子邮件 要执行此操作,请在创建传输时切换:
let transporter=nodeEmailer.createTransport({
普尔:没错,
主机:process.env.SMTP_主机,
端口:parseInt(process.env.SMTP_端口,10),
安全:错误,
tls:{
拒绝:错误
}
});
您可能需要考虑发送电子邮件
要执行此操作,请在创建传输时切换:
let transporter=nodeEmailer.createTransport({
普尔:没错,
主机:process.env.SMTP_主机,
端口:parseInt(process.env.SMTP_端口,10),
安全:错误,
tls:{
拒绝:错误
}
});
你好!我添加了您推荐的选项。不幸的是,我看到了以下错误:错误:连接池已关闭
。在那个错误之后,我删除了transporter.close()代码>我以前用过的。在10封电子邮件之后,我终于看到了这样的错误:错误:Mail命令失败:450 4.7.1错误:来自xxx.xx.xxx.xxx的邮件过多
。似乎删除transporter.close()
行是池正常工作所必需的。似乎还有其他与来自单个IP的请求速率相关的限制。尝试使用其他选项来匹配您面临的限制。我尝试使用不同的选项。不幸的是,他们都没有帮助我。如果我无法访问SMTP服务器,则只有RabbitMQ
可以帮助我了解我的意见。你有什么想法吗?你好!我添加了您推荐的选项。不幸的是,我看到了以下错误:错误:连接池已关闭
。在那个错误之后,我删除了transporter.close()代码>我以前用过的。在10封电子邮件之后,我终于看到了这样的错误:错误:Mail命令失败:450 4.7.1错误:来自xxx.xx.xxx.xxx的邮件过多
。似乎删除transporter.close()
行是池正常工作所必需的。似乎还有其他与来自单个IP的请求速率相关的限制。尝试使用其他选项来匹配您面临的限制。我尝试使用不同的选项。不幸的是,他们都没有帮助我。如果我无法访问SMTP服务器,则只有RabbitMQ
可以帮助我了解我的意见。你有什么想法吗?