Мы делаем это с помощью cron.
Мы (в нашей компании) разделили список пользователей на блоки по 50 адресов. Эти блоки помещаются в таблицу базы данных (с данными, связывающими этот блок с данными электронной почты (заголовки, тело и т. Д.).
Через файл cron.php, который запускается каждые 5 минут или около того, система захватывает первый доступный блок в базе данных, который необходимо отправить, и отправляет электронные письма.