提问人:Inaara Kalani 提问时间:5/27/2022 更新时间:10/24/2022 访问量:2905
数据命令失败:421 4.3.0 临时系统问题。请稍后再试 (10) - gsmtp
Data command failed: 421 4.3.0 Temporary System Problem. Try again later (10) - gsmtp
问:
我已经在Firebase上部署了一个HTTPS函数,当我尝试批量发送电子邮件时,我总是收到此错误。我正在使用 nodemailer 池发送电子邮件。
错误:数据命令失败:421 4.3.0 临时系统问题。请稍后再试 (10) - gsmtp
客户端代码:
export const sendEmails = async () => {
// Fetch All Users
let users = []
let data = await db.collection('users')
data.forEach(e => {
let data = e.data()
let email = data['email']
users.push({ email })
})
// Divide users into multiple batches of 25
let batches = [[]], num = 0, batchSize = 25
Promise.all(users.map(batch => {
if (batches[num].length < batchSize) {
batches[num].push(batch)
} else {
batches.push([batch])
num++
}
}))
// Send Email Request for each batch with some cooldown time.
Promise.all(batches.map((batch, index) => {
setTimeout(async () => {
await sendBroadcast(batch)
}, 2000 * index)
}))
}
export const sendBroadcast = async (users) => {
const url = base + "sendBroadcast?"
const body = JSON.stringify({ users })
return await fetch(url, { method: "POST", body })
}
服务器端代码:
let transporter = nodemailer.createTransport({
service: 'gmail',
pool: true,
maxConnections: 20,
maxMessages: 500,
auth: {
user: 'SOME EMAIL',
pass: 'SOME PASSWORD',
},
})
exports.sendBroadcast = functions.runWith({ timeoutSeconds: 540, memory: '2GB' }).https.onRequest((req, res) => {
cors(req, res, () => {
const body = JSON.parse(req.body)
const users = body.users
console.log('info', 'Send email to ' + users.length + ' users')
users.forEach(function (to, index) {
var msg = {
from: 'SOME EMAIL',
to: to.email,
subject: "SUBJECT",
html: "<h2> SOME HTML </h2>",
}
return transporter.sendMail(msg, (erro, info) => {
if (erro) {
console.log('error', erro.message, 'failed to send to ' + email)
return res.status(500).send(erro.toString())
}
return res.send('sent')
})
})
})
})
这是因为 gmail 限制了每天的电子邮件数量吗?我在某处读到,如果我在每封电子邮件后添加冷却时间,它会起作用,我也尝试过,但我收到“在建立安全 TLS 连接之前客户端网络套接字断开连接”错误。以下是该问题的 Stack Overflow 线程: 通过 Nodemailer 发送批量电子邮件时,Firebase 函数出现错误“客户端网络套接字在建立安全 TLS 连接之前断开连接”
答: 暂无答案
评论