おそらく、送信された電子メールのテーブル エントリが必要になるでしょう。そうすれば、プロセスがダウンしたり何らかの形で失敗したりした場合に、監査証跡として機能します。
MongoLab、MongoHQ、SimpleDB などのエラスティック クラウド データベースでこれを行うことを検討することをお勧めします。(Mongo ベースのサービスを使用すると、新しい電子メール エントリのスキーマを簡単に拡張できます。)
これを行うと、SimpleWorker のようなクラウド ワーカー キューを使用すると、大量のメールを同時に送信したり、バッチで送信したりして、レート制限を回避することが容易になります。(完全な開示: 私は Iron.io/SimpleWorker で働いています)
You're taking a good approach to bundle multiple email sends into a single worker task to amortize the worker setup costs. With an elastic cloud worker system, you could have master workers come off schedule and then queue up a number of slave worker tasks, each with a set of users to send.
With table entries, you can then go back through the data tables and address any emails that failed or didn't go through.