Как запускать php-скрипт через 5 минут?
При регистрации ставить статус, условно, 1. Скриптом, который указан в cron, обходить все статусы с 1, отправлять почту и ставить статус 2.
Только через cron (гугль знает)
Это оптимальное и единственное)) решение.
Пока писал прочитал камент Мистериона выше - он дело пишет))
Создаете в базе таблицу с очередью.
Скажем, юзер регнулся, скрипт ставит задание в очередь и указывает время исполнения +5 минут от текущего.
Cron каждую минуту запускает скрипт который смотрит в очередь и если время исполнения задания уже в прошлом - исполняет задание а само задание помечает как исполненное.
Ну это без подробностей если))