getTimezoneOffset() would return the value after taking care of DST. So there shouldn't be any DST related inconsistencies. Now if the user moves to another timezone, and never hits one of our page, there is no direct way of tracking his/her change in location.
I mean that starting mid-March a user who had previously been in a -8:00 UTC offset would then be in a -7:00 UTC offset and you wouldn't know the timezone offset changed until they visited the website again.
That’s certainly a problem. But this solution is better than being totally off. Worst case the person gets the mail in the previous timezone he registered which should be before the DST.