Why doesn't this work?

normally mail(); uses sendmail, which majority of the Linux/Unix hosts have it installed and running. It’s different for windows hosts. You can read about it on php.net: http://www.php.net/manual/en/ref.mail.php

The ‘;’ is very important. Your script won’t work without it. It tells the php engine to end that variable string and then begin the next bit.