Как запретить отправку формы в течении 30 минут?
Форму оставляете как есть, а в БД создаете табличку с полями: IP, время отправки, еще какие-то данные, чтобы идентифицировать пользователя.
После этого каждый раз при получении данных от формы сверяете, не повторная ли это отправка и прошло ли уже полчаса. Если всё путём, отправляете данные на почту, а данные пользователя снова пишите в БД. Если нет - игнорируете.
Важен факт того, чтобы злоумышленник всё так же думал, что вредит вам, хотя на самом деле вы его давно обошли. Так он не будет пытаться придумывать новые способы вам что-нибудь испортить
Новые капчи, иногда не нужно вбивать символы:
https://nocaptcha.mail.ru/
https://www.google.com/recaptcha/intro/index.html
Если форму заполняет бот(именно бот, не человек автоматизирует процесс), то можно создать <input type='password' name='password' class='hide-me'>и проверять, если на сервере $_post['password'] не пустой, значит его автоматом забил бот. Либо наоборот, скрытое заполненное поле, при клике по кнопке "отправить" js его обнуляет. Зависит конечно от бота, но событие click они часто не вызывают, значит при отправке формы наше поле не будет пустым, что снова должно насторожить.
Идеально выяснить, как точно вас спамят и от этого отталкиваться.
Ну и на сервере проверять, что была ли заявка с этого ip. Чтобы не вспугнуть реального пользователя, можно делать, что если повторная заявка в течение получаса, то выводить сообщение, что заявка уже была принята и мы свяжемся как только сможем.