Я бы настроил таблицу базы данных, которая обрабатывает вашу очередь электронной почты.Эта таблица может иметь столбец, который указывает, когда каждая строка, соответствующая одному письму, была поставлена в очередь.Вы можете запустить задание cron, скажем, каждый час или около того, которое проверяет, истекли ли 24 часа.
email_type | to | data
--------------------------------------------------------------------------
registration | fred@stuff.com | {first_name: "Fred", last_name: "Stuff" }
Это решение является гибким, поскольку у вас могут быть другие типы электронных писем, которые вы хотите отложитьразное количество времени.Вы можете добавить столбец, который указывает, какой тип электронной почты и ваш код обрабатывает каждый тип по-разному.
Этот cronjob будет выполняться каждый час:
0 * * * * php check_mail_queue.php
Вы можете либодобавьте столбец, который указывает, было ли отправлено письмо, или просто удалите строку.Кроме того, если вы хотите, чтобы в каждом письме были пользовательские данные, сериализуйте массив, хэш, словарь и т. Д. И сохраните их в столбце таблицы.