Как правильно использовать Nodemailer в expressjs?
Я пытаюсь использовать nodemailer в expressjs приложение. Должен ли я продолжать создавать транспортный объект из обработчика маршрута или создавать транспортный объект внутри обработчика маршрута просто отлично?
var express = require('express')
, app = express()
, nodemailer = require('nodemailer');
smtpTrans = nodemailer.createTransport('SMTP', {
service: 'Gmail',
auth: {
user: "me@gmail.com",
pass: "application-specific-password"
}
});
app.post('/register', function(req, res){
smtpTrans.sendMail(mailOptions);
});
или
var express = require('express')
, app = express()
, nodemailer = require('nodemailer');
app.post('/register', function(req, res){
smtpTrans = nodemailer.createTransport('SMTP', {
service: 'Gmail',
auth: {
user: "me@gmail.com",
pass: "application-specific-password"
}
});
smtpTrans.sendMail(mailOptions);
});
1 ответов
вы должны думать о вашем случае использовать, чтобы сделать выбор.
транспорт SMTP в nodemailer
создает пул соединений, который необходимо явно закрыть. Это хорошо, потому что соединение всегда остается открытым: вы страдаете только задержками соединения(включая согласование TLS и т. д.) при запуске приложения.
ваше первое решение хорошо, если вы отправляете много сообщений: сохраняя соединение открытым, вы минимизируете задержку и использование ресурсов с помощью пул соединений.
С другой стороны, ваше второе решение хорошо, если вы отправляете несколько сообщений: нет необходимости поддерживать соединение, если вы отправляете одно письмо в час. Будьте осторожны, так как ваш текущий код немного неправильный: вам нужно явно закрыть пул соединений. Если вы этого не сделаете, пул соединений останется открытым, даже если вы потеряете ссылку на объект.
smtpTrans = nodemailer.createTransport('SMTP', { … });
smtpTrans.sendMail(mailOptions, function (err, responseStatus) {
smtpTrans.close(); // Don't forget to close the connection pool!
});
С этот вопрос кажется, что все ошибки в the