Send Mail After Checking Date Field Value My content type (product) has a date field named Expired Date. All I want is like this:

check value of expired date field from content type product. If value equal to 7 days from now, send mail with list of node title and node url. 

How to do this with Rules? or any suggestion modules?
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.