This may or may not help you:
A cron job would probably be the best option for you, run say once a day to check for users that had been inactive for 7 days.
On my site, which doesn't have so many users, I use the following to send mass mails to members where the mass mail is a custom message (through a form):
$body = mysql_escape_string($formValue['message']);
$subject = mysql_escape_string($formValue['subject']);
$from = 'firstname.lastname@example.org';
$Query = "SELECT * FROM userdetailstable";
$Result = mysql_query ($Query, $Link);
mail ($to, $subject, $body, $from);
This obviously loops through the users table finding the criteria specified and therefore probably does use up a lot of resources....but at the moment I don't know of any other ways of doing it.