I notice in here that there is no indication of method=POST.
This script worked perfectly well using $_REQUEST
You have solved your own problem...
The $_REQUEST array includes $_GET, $_POST, and $_COOKIE
You are utilizing $_POST for the form submission and $_GET for the link.
To get the information held in the URL query string, you need to use $_GET, not $_POST
// Link: http://firstname.lastname@example.org&emailcount=1&act=1&action=subscribe&fname=John&surname=Craven&country=UK&year=2013&m=7d2263 650cde3c8a1f5744414de3a748
$email = $_GET['email']; // email@example.com