Вместо отправки, пишите письмо в json/xml файл или в БД. А по крону запускайте скрипт, отравляющий письмо. Если письмо отправится, удаляйте/перемещайте файл/запись.
Ещё очень красиво решается асинхронными задачами в Gearman.
Может, делать что то типа планировщика задач, в который добавляется отправка письма со всем необходимым, а он выполняется отдельно от скрипта в какой то период времени.