我有一个 Node.js 电子邮件服务器,工作正常,但我注意到一个问题。如果查询字符串找到 4 行,它将发送四封电子邮件,但仅发送到第一个结果,而不是发送到每个找到的电子邮件地址。
var mysql = require('mysql');
var nodemailer = require('nodemailer');
// Amazon SES is sending the emails - uses this module for node
var ses = require('nodemailer-ses-transport');
//transport for connecting with Amazon SES
var transporter = nodemailer.createTransport(ses({
accessKeyId: '****************',
SecretAccessKey: '*************'
}));
// Mysql Connection to database
var connection = mysql.createConnection({
*****connection info goes here *****
});
//Connect to mysql database and check for errors
connection.connect(function(err) {
if (err) {
console.error('error connecting: ' + err.stack);
return;}
});
var querystring1 = 'SELECT `date_created`,`first_name`,`last_name`,`email` FROM `users` WHERE TIMESTAMPDIFF(SECOND,date_created, NOW()) <=298 AND `email`!="" LIMIT 0,5';
connection.query(querystring1, function (err, row) {
if (err) throw err;
for (var i in row) {
// Email content; change text to html to have html emails. row[i].column name will pull relevant database info
var sendit = {
to: row[i].email,
from: '******@******',
subject: 'Hi ' + row[i].first_name + ', Thanks for joining ******!',
html: {path:__dirname + '/templates/welcome.html'}
};
// Send emails
transporter.sendMail(sendit,function(error,response){
if (error) {
console.log(error);
}else{
console.log("Message sent1: " + row[i].first_name);}
transporter.close();}
)
}});
...
如何让它循环遍历每个找到的行并使用行数据单独的行数据发送自定义电子邮件?
最佳答案
在发送完所有电子邮件之前,请勿关闭传输程序。
var querystring1 = 'SELECT `date_created`,`first_name`,`last_name`,`email` FROM `users` WHERE TIMESTAMPDIFF(SECOND,date_created, NOW()) <=298 AND `email`!="" LIMIT 0,5';
connection.query(querystring1, function (err, row) { if (err) throw err;
var toSend=[];
for (var i in row) { // Email content; change text to html to have html emails.
toSend.push({//row[i].column name will pull relevant database info
to: row[i].email,
from: '******@******',
subject: 'Hi ' + row[i].first_name + ', Thanks for joining ******!',
html: {path:__dirname + '/templates/welcome.html'}
});
}
// Send emails
async.eachSeries(toSend, function( sendit, callback) {
transporter.sendMail(sendit,function(error,response){
if (error) {
callback(error);
}else{
console.log("Message sent1: " + sendit.to); callback();
}
)},function(err){if (err) throw (err); console.log("Finished")};
});
});
关于javascript - node.js:循环,通过电子邮件发送查询中的每个匹配行,但它通过 # 匹配数向同一用户发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25412544/