На вашем месте я бы написал фоновый демон для этого. Я сохранял бы все свои электронные письма в базе данных в исходном HTTP-вызове, и в фоновом режиме постоянно выполнялся скрипт, который проверяет, скажем, каждые 30 секунд, чтобы увидеть, есть ли какие-либо ожидающие письма, а затем отправляет их.
Это также позволит вам проверять наличие дубликатов при добавлении электронных писем в очередь, поэтому вам не нужно беспокоиться о множественных добавлениях.
Редактировать Учитывая вашу причину не использовать задания cron (т. Е. У вас нет доступа к серверу в оболочке), я бы не использовал этот подход.
Вместо этого у меня был бы первый вызов AJAX, когда PHP вставил все электронные письма в базу данных и вернул ключ к Javascript. Затем я должен был вызвать Javascript, используя этот ключ, где PHP обрабатывал электронные письма в течение 5 секунд, а затем возвращал количество сообщений, оставшихся в браузере. Тогда я бы заставил Javascript повторять этот запрос, пока не осталось писем.
Это даст дополнительное преимущество, так как вы сможете получать уведомления о прогрессе, и, если сервер по какой-либо причине выйдет из строя, ваши электронные письма будут восстановлены.