I might suggest Mail::Bulkmail. You're probably better off queueing the request via CGI and performing the actual sending of mail in a separate job, either forked from your CGI or spawned independently (e.g. a cron job set by the CGI or checking for the presence of a flag set by your CGI).