it would be helpful to see your php code. the problem is probably there. if they can use your page to send email to whoever they want, then they are probably putting newline characters in the form inputs and adding additional headers to CC or BCC whomever they please.
the recommendation from your server provider is probably a good one. given that the form has several pages, you can do this on the previous pages:
// PUT THIS AT THE TOP OF YOUR FILE
session_start();
$_SESSION['page_1'] = 1;
repeat that on all the subsequent pages of your form setting values for page_2, page_3, etc.
then on the page that actually sends the mail, you can make sure a visitor visited all the other pages by doing this:
if ($_SESSION['page_1'] !== 1) {
die('STOP SPAMMING ME');
}
if ($_SESSION['page_2'] !== 1) {
die('STOP SPAMMING ME');
}
// etc.
then after you have sent the mail you should unset all those session vars:
unset($_SESSION['page_1'];
unset($_SESSION['page_2'];
// etc.
BE WARNED that setting a session variable and having it show up on subsequent page accesses is in some rare cases a tricky business. HTTP is a 'stateless' protocol. This means the server doesn't know who the heck is visiting any given page at any given time unless that user presents them with a unique character string or number known as a SESSION ID. Generally speaking, your server/php has to either put the session id in a cookie or append the session id to every URL on your site if the user has cookies turned off.