ウェブサイトのお問い合わせフォームを作成しています。Angular js を介してフォーム送信を Firebase に追加しています。新しい送信が Firebase に送信されると、Node で child_added を使用して nodemailer をトリガーします。これは正常に機能していますが、開発サーバーを再起動するたびに送信コレクション全体が再メール送信され、Heroku の本番環境では毎日複数回送信されます。メールが複数回送信されないようにするにはどうすればよいですか?
var myRoot = new Firebase('https://firebase.firebaseio.com/website/submissions');
myRoot.on('child_added', function(snapshot) {
var userData = snapshot.val();
var smtpTransport = nodemailer.createTransport("SMTP",{
auth: {
user: "email@gmail.com",
pass: "password"
}
});
var mailOptions = {
from: "Website <email@gmail.com>", // sender address
to: "email@email.com.au", // list of receivers
subject: "New Website Lead", // Subject line
html: "<p><strong>Name: </strong>" + userData.name + "</p>" + "<p><strong>Email: </strong>" + userData.email + "</p>" + "<p><strong>Phone: </strong>" + userData.phone + "</p>" + "<p><strong>Enquiry: </strong>" + userData.enquiry + "</p>" + "<p><strong>Submitted: </strong>" + userData.date + "</p>" // html body
};
smtpTransport.sendMail(mailOptions, function(error, response) {
if(error) {
console.log(error);
}
else {
console.log("Message sent: " + response.message);
}
smtpTransport.close();
});
});