I live in a country that is 18 hours ahead (GMT 12) of the USA. I receive my calendar alert emails at 7:30am but the messages in the email are 1 day out. e.g. It says there is a birthday today but it was actually yesterday! I guess the servers are in the USA so are using the US date/time to decide what to send and when.
Each recipient of the emails could be in a different time zone. The emails need to take into account the date/time of the person receiving the email. Maybe you need to look at the physical address of the person or have a field in their profile so that they can enter their date/time offset.
Then rather than sending the emails only once each day (presumable you do them at about midnight US time) you would need to run it each hour and send the emails for all recipients who just had a midnight. The same number of emails would be sent but they would be sent throughout the 24hour day and would have the correct date content.