When the messages are queued, the callbacks called once they are sent should be the ones given as argument for each email, not the one of the last email.
Responding with the correct callback
A bit proper
(I agree it seldom happens, just in case).
I think this makes a lot of sense. Let me do a sanity check for review and we'll merge.
Always respond if file is missing
I added another small fix : if a file was missing, the first time the method was called the callback would be called with the proper error, but the next times, it would never be called.
Another way of fixing it would be to set _templateCache[message.template].error to the error raised, and to respond this for each new call to the method (ie. without having to call readFile each time), but it would mean the server has to be reloaded when the missing file is eventually added, which I didn't like personally.