Во многих случаях код, скорее всего, не будет работать. Вы не можете сказать Express, чтобы он отвечал с двумя различными кодами состояния, вы должны решить один раз , какой код и ответ вы отправите.
Должен ли код, отвечающий за отправку второй почты, быть внутри обратного вызова первой почты?
Да, это может быть способ, однако, у него есть два недостатка
1) он плохо масштабируется (сделайте это для четырех, трех, ... десяти тысяч писем ...)
2) он не очень хорошо масштабируется с точки зрения производительности, поскольку отправляет одно электронное письмо за другим, вместо этого вы можете отправлять их параллельно:
Для этого пообещать отправку почты:
const sendMail = () => new Promise((resolve, reject) => {
transporter.sendMail(someFunc(), (err) => {
if(err) reject(err) else resolve();
});
});
Тогда это так же просто, как:
Promise.all([ sendMail(), sendMail() ])
.then(() => res.status(200).send("success"));
.catch(() => res.status(500).send("failure"));