Having it setup like this would be a little tricker since the script itself does not know if an email has been sent to a certain person. You would need to control this with the rs query so that it did not select any user's that have had the email sent recently.
To do something like this you could update the records that you have sent the email to so that it indicates the message was sent. Then when you query the db you will need to filter these users out so that they do not appear in the recordset again. This would be a very custom piece though.
Another way you could do this would be to tighten up the query so that it only sends emails to user's that are a certain number of days away from expiring. For example if you had 5 users and three of them expire in 5 days, and the other two expire in six days you can have the query select only the users who expire in 5 days. This would send to the the three example workers whose expiration date is 5 days away but it would not send to the other two who expire in 6 days. When you run this same query 24 hours later there should only be two matches and they would get their email while the others remain untouched.
I think this is the best way to go about it, then you do not have to account for others that may have already received the email.