Es bastante fácil, necesitas la base de datos con las fechas y un servicio tipo CRON que cada hora día revise en la base de datos por algún cumpleaños.
Cuando hay alguno simplemente extrae los datos y realiza el envío.
Demasiado sencillo, ¿no te parece?