Here's my problem: If the user de-activates the trial license and registers again using a different email address they receive a new product key and a new 7 day trial. The new product key can be entered and a perpetual trial license can be obtained, you just need a new email address every 7 days.
Well, one way to handle this problem is to use the unverified trial in tandem with the verified trial (your product key with custom license fields set). For example, when the user activates, call UseTrial() and GetTrialDaysRemaining(). The remaining trial days is 0, and they have a trial key, then you know their trial is up. Then you can tell them to just buy a renewal.
Does that make sense?