Вы должны сделать ajax-запрос для этого, иначе это не сработает.Вы можете подумать о том, чтобы поместить генерацию в фоновое задание и отправить письмо по электронной почте после завершения запроса.
Имейте в виду, что запрос, который занимает слишком много времени, в большинстве случаев вызовет тайм-аут.