Javascript 使用Node.js中的nodeEmailer发送并发电子邮件
当有人在我的网站上填写表单时,我试图发送验证电子邮件,我使用nodemailer实现了这一点 我的node.js代码如下所示:Javascript 使用Node.js中的nodeEmailer发送并发电子邮件,javascript,node.js,smtp,Javascript,Node.js,Smtp,当有人在我的网站上填写表单时,我试图发送验证电子邮件,我使用nodemailer实现了这一点 我的node.js代码如下所示: const express = require('express'); const app=express(); app.use(express.json()); app.post('/',(req,res)=>{ var nodemailer = require('nodemailer'); var transporter = nodemaile
const express = require('express');
const app=express();
app.use(express.json());
app.post('/',(req,res)=>{
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
host: "smtp-mail.outlook.com",
secureConnection: false,
port: 587,
tls: {
ciphers:'SSLv3',
rejectUnauthorized: false
},
auth: {
user: 'generic-email@outlook.com',
pass: 'generic-password'
}
});
var mailOptions = {
from: 'generic-email@outlook.com',
to: req.body.email_name,
subject: 'testing <No-Reply Email>',
text: 'testing',
html: `<div>testing</div>`
};
transporter.sendMail(mailOptions, await function(error, info){
if(error)
{
console.log(error);
return res.json({stat:'not good'});
}
console.log('Message sent: ' + info.response);
return res.json({stat:'all good'});
});
});
app.listen(3000,()=>{
console.log('Listening at Port 3000...');
});
const express=require('express');
常量app=express();
使用(express.json());
应用程序发布(“/”,(请求,回复)=>{
var nodeEmailer=require('nodeEmailer');
var transporter=nodeEmailer.createTransport({
主机:“smtp mail.outlook.com”,
安全连接:false,
港口:587,
tls:{
密码:'SSLv3',
拒绝:错误
},
认证:{
用户:'通用-email@outlook.com',
密码:“通用密码”
}
});
var mailpoptions={
来自:通用-email@outlook.com',
收件人:req.body.email\u name,
主题:"测试",,
文本:“测试”,
html:`测试`
};
transporter.sendMail(邮件选项,等待函数(错误,信息){
如果(错误)
{
console.log(错误);
返回res.json({stat:'notgood'});
}
console.log('发送的消息:'+信息响应);
返回res.json({stat:'all good'});
});
});
app.listen(3000,()=>{
log('在端口3000侦听…');
});
虽然它工作正常,但我怀疑如果多人发出相同的请求,它会给出响应:“超过了Avast中的421并发连接限制(pass:0,processs:node.exe[46])
”错误
当我尝试循环代码并向自己发送300封电子邮件以测试每天电子邮件的限制时,我遇到了这个错误
当站点处于活动状态时,如何避免此错误
到目前为止,我提出了两种可能的解释:
在这种情况下我能做什么?我是否采取了正确的方法?我应该使用其他电子邮件API服务吗?我对所有这些SMTP内容都相当陌生。我认为问题在于您正在为每个请求创建一个新连接,只需这样做
const express = require('express');
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
host: "smtp-mail.outlook.com",
secureConnection: false,
port: 587,
tls: {
ciphers:'SSLv3',
rejectUnauthorized: false
},
auth: {
user: 'generic-email@outlook.com',
pass: 'generic-password'
}
});
const app=express();
app.use(express.json());
app.post('/',(req,res)=>{
var mailOptions = {
from: 'generic-email@outlook.com',
to: req.body.email_name,
subject: 'testing <No-Reply Email>',
text: 'testing',
html: `<div>testing</div>`
};
transporter.sendMail(mailOptions, await function(error, info){
if(error) {
console.log(error);
return res.json({stat:'not good'});
}
console.log('Message sent: ' + info.response);
return res.json({stat:'all good'});
});
});
const express=require('express');
const nodemailer=require('nodemailer');
const transporter=nodemailer.createTransport({
主机:“smtp mail.outlook.com”,
安全连接:false,
港口:587,
tls:{
密码:'SSLv3',
拒绝:错误
},
认证:{
用户:'通用-email@outlook.com',
密码:“通用密码”
}
});
常量app=express();
使用(express.json());
应用程序发布(“/”,(请求,回复)=>{
var mailpoptions={
来自:通用-email@outlook.com',
收件人:req.body.email\u name,
主题:"测试",,
文本:“测试”,
html:`测试`
};
transporter.sendMail(邮件选项,等待函数(错误,信息){
如果(错误){
console.log(错误);
返回res.json({stat:'notgood'});
}
console.log('发送的消息:'+信息响应);
返回res.json({stat:'all good'});
});
});
就像一个符咒,但它能满足多个请求吗?例如,如果多人开始使用该网站,每个请求是否会同时发送,还是会排队并一次发送一个请求?它将同时发送outlook电子邮件可以处理多少并发连接?如果一次连接太多,我该如何处理?不确定它能处理多少连接,但如果连接太多,只需将pool:true,maxConnections:someNumber
添加到createTransport
配置中即可“如果使用共享,则NodeEmailer将保持固定数量的连接打开,并在连接可用时发送下一条消息。”请阅读-总结是,这不是向志愿者致辞的理想方式,可能会对获得答案产生反作用。请不要将此添加到您的问题中。