Debe ser porque la validación que tienes solo esta del lado del cliente, no del servidor. Es decir, si tu archivo se llama enviar.php y alguien entra a
http://tusitio.com/enviar.php, va a ejecutarse tu script sin problemas y enviara un correo... sin datos.
Para solucionar eso solamente tienes que validar en el lado del servidor, que sea un formulario enviado por post, que no estén vacíos los campos, etc etc.