hmm regarding what i said before it would have to auto send it no matter who the user with the browser is, there is no way to automate this process. Yet as i said before it could send it to themselves and have a table in the db that if the card was sent then it sets this value to the year it was sent then it checks if its a new year and if not carrys on not sending but if its a new year and its after there birthday it will send the card

it would work perfectly. Not having people online doesn't matter it just sends it when they come online to save traffic but they won't know it just prints the correct date in.
(Sorry bout the long single sentence)