use CGI;
$data=new CGI;
$name=$data->param('name');
$mail=$mail->param('mail');
$message=$message->param('message');

こうやって取り出したデータの中の文字は、
URLエンコードされたままではなく元に戻されているのでしょうか?