I think queue is a good suggestion. There was a great preso at drupalcon sf by jvandyk re: batch v. queue, in case you wanted a high-level on the typical use cases for each.

http://sf2010.drupal.org/conference/sessions/batch-vs-queue-api-smackdown


On Tue, Jun 1, 2010 at 10:58 AM, Andrew Berry <andrewberry@sentex.net> wrote:
On 2010-06-01, at 2:09 AM, Chris Skene wrote:

> Why not try using the Batch API instead?

Better yet, use http://drupal.org/project/job_queue so that your user doesn't have to wait for each email to be sent.

--Andrew