Un esquema muy aproximado, asumiendo que ya tiene una tabla de base de datos.
Todos los días, ejecute un script que calcule hoy menos un mes (resuelto en la respuesta de Stratton) y realice un select * from databasetable where expirydate = todayminusonemonth
. Repita el conjunto de resultados, redacte un mensaje con la información específica del objetivo y envíelo usando la interfaz de correo de php.
Es, con mucho, la solución más fácil para asegurarse de que el script se ejecute todos los días, si esa no es una opción, se debe agregar una columna a la base de datos para indicar que el correo ha sido enviado. O se podría crear una tabla adicional que enumere todos los días para los que se han enviado correos...
¿Ver? Esta primera descomposición del problema fue bastante fácil. Ahora puede comenzar a resolver cada uno de estos problemas parciales o buscar información/cómo para cada uno. Siéntete libre de crear una nueva pregunta con necesidades más específicas que puedas tener.
Un problema con el que puede encontrarse es que su servidor web no permite la ejecución de scripts cron. Una solución alternativa muy creativa que utiliza un servicio de monitoreo de sitios web se explica en No tengo trabajos cron en mi servidor. ¿Cuál es una alternativa para enviar correos electrónicos sin intervención del usuario?