Hey I have just build my own "mail_queue" system because I forgot to come here to see if there was already an extension.

Basically it does the same as yours but it has two different things:

One:
I have added a method in Yii::app()->mail component named queue(), and this way if your application was sending instant emails that you want instead to save them and send them later with the cron job, you simply use Yii::app()->mail->queue($message) instead of Yii::app()->mail->send($message). And the message will be saved for later delivery.

Second:
The other requirement that I had for my application is to avoid re-sending the same email if a user clics a button several times. For example, users on your website can follow other users, so, someone clicks follow and you send a email to the followed user saying "Hey, you've got a new follwer".

The problem is that if the user clics Unfollow, and then Follow again, your application will end up sending two emails.

So what I did is a "simple system to make emails unique" and it works this way:
The Yii::app()->mail->queue() method has two optional parameters: $check_unique and $unique_params

The parameters provided in the array will be serialized and converted to a md5 hash that will be saved in the queue table to later identify if you are trying to add a duplicate queue for the same message.