Scheduling Emails

I use percolate:synced-cron for a similar task. Something along the lines of this would work:

// on the server
SyncedCron.add({
  name: 'Query the scheduled emails and send if necessary.',
  schedule: function(parser) {
    return parser.text('every 10 mins');
  },
  job: function() {
    Meteor.call('sendScheduledEmails');
  }
});

// on the server
Meteor.methods({
  sendScheduledEmails: function() {
    ScheduledEmailsCollection.find( { sent: false, scheduledTime: { $lte: new Date() } } ).forEach( function(email) {
      // send the emails here and mark as sent
    });
  }
});

If you don’t want each email send operation to block, you can further refactor the code so that you can use this.unblock() within your methods and fire off emails almost concurrently.