Send Mail After Checking Date Field Value
Yes you could do this through rules granted the product expiration date is a field. 


Create a new rule to run on cron maintenance tasks 
Condition--> has field name
Pick your field name 
Action--> execute custom PHP. 


I don't know what your level of PHP experience is so I'll hold off on putting any code down, but the next step would be to write a short snippet of PHP that takes the sites current datetime and checks the values of your chosen field for values that are 7 days away from expiration (rules should give you tokens for both items). 


Then in that same custom PHP area use rules_action_mail() to send the email out with the results (for reference: https://drupal.org/node/322834). 


You could also do this with a SQL query in the PHP area: http://www.barnettech.com/content/dbquery-drupal-creating-sql-queries-drupal-way . Just run through your field in the database and check for the values you need, then return the results in the mail message.  

If I were to do something like this, I would implement hook_cron() in a custom module: https://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_cron/7 vs. using Rules since it would require less steps. 

Edit: As requested: 

See here to make a Drupal 7 module: https://drupal.org/node/1074360 

Using hook_cron would go something like: 

function mymodule_cron(){
 myfunctions(); 
} 

function myfunctions(){
//do cool stuff
}


As far as what would go into "myfunctions", it would probably be a query on the database, returning those results, then sending those results in an email with mail(). That would be it.