@ hamlin11 ответ правильный, если вы хотите управлять такой большой электронной почтой, вы ДОЛЖНЫ делать это небольшими порциями и управлять этой задачей как асинхронной задачей.
Для управления асинхронными задачами у вас будет много возможностей: проверка подпроцесса на все ваши запросы, ожидающие некоторых асинхронных заданий, отдельное задание cron, вызов скрипта cron.php из crontab, даже ответ psynnott , с внешним скриптом, перезапускающим себя в конце.
Но вы также можете использовать правильный инструмент для правильной задачи, если у вас есть некоторый контроль над системой под вашим сайтом. Отправьте одно простое электронное письмо менеджеру списков рассылки , который сделает всю работу за вас. Это будет означать, что вы создадите правильный список пользователей в менеджере списков рассылки. Внешними менеджерами списков рассылки являются, например, mailman или sympa . Эти инструменты содержат роботов, с которыми вы можете общаться, чтобы кормить получателей списка рассылки. Ответ @ psynnott можно рассматривать как внешний скрипт PHP, выполняющий очень простые задачи менеджера списка рассылки. Если вы хотите изменить содержимое письма в зависимости от некоторых пользовательских параметров, вам, безусловно, придется написать собственный процесс управления задачами.
Но вы также можете найти веб-сервисы , выполняющие эту работу для вас. Управление спамом - это тяжелая работа, а управление крупным почтовым агентством - это тоже тяжелая работа, но это, конечно, не бесплатно.