Jeśli na sesjach wybierzesz sobie sposób, to tak.
/* to poniżej to jest instrukcja warunkowa, która sprawdzi Ci, czy minęło 5 minut od ostatniego e-maila, czy nie */
if (isset($_SESSION['lastMail']) && $_SESSION['lastMail'] <= $time) { // tutaj twój skrypt wysyłki
$_SESSION['lastMail'] = time(); //to wrzucasz sobie po udanej wysyłce, tworzy Ci zmienną sesyjną z aktualnym czasem, czyli z godziną, o której wysłano e-mail }
else
{
echo 'Od ostatniego e-maila nie minęło 5 minut, musisz poczekać.'; }
Coś w ten deseń musisz kombinować. Oczywiście pod warunkiem, że decydujesz się, aby to działało na sesjach, jednakże ktoś może wyłączyć i włączyć przeglądarkę i wyśle e-maila, lub skasować historia (w tym sesje). Cookies byłoby bardziej efektywne, gdyż już wyłączenie przeglądarki nie wpłynie na to, ale również można skasować dane przeglądarki. Ewentualnie możesz jeszcze zapisywać do bazy lub pliku adres IP użytkownika i sprawdzać przed każdą wysyłką adres IP użytkownika czy istnieje w bazie, jak tak to sprawdzać jego czas ostatniej wysyłki. Wszystko na podobnej zasadzie działa, jakieś zadeklarowanie gdzieś zmiennej i sprawdzenie później czegoś instrukcją warunkową.