Si, la funcion mail depende de que exista un servidor SMTP local disponible para realizar el envio. Si estas haciendo un script en localhost que despues vas a subir a algun servidor no sera necesario que instales un SMTP, solo haz pruebas que funcionen en tu servidor.
A tu script le faltarian algunos encabezados para poder realizar el envio, te dejo un ejemplo:
Código php:
Ver original$from_name = 'Nombre';
$headers[] = "From: $from_name <$from_mail>";
$headers[] = 'Reply-To: ' . $from_mail;
$headers[] = 'Return-Path: <' . $from_mail . '>';
$headers[] = 'Sender: <' . $from_mail . '>';
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Date: ' . date('r', time()); $headers[] = 'Content-Type: text/html; charset=iso-8859-1'; // format=flowed
$headers[] = 'Content-Transfer-Encoding: 8bit'; // 7bit
$headers = implode("\n", $headers);
// Convertir todo a html y crear enlaces en URL's y direcciones de email
$body = "<html><body><p>$message</body></html>";
$body = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)', '<a href="\\1">\\1</a>', $body); $body = eregi_replace('([[:space:]()[{}])([url]www.[-a-zA-Z0-9@:%_\+.~#?&//=]+[/url])', '\\1<a href="http://\\2">\\2</a>', $body); $body = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})', '<a href="mailto:\\1">\\1</a>', $body);
// Enviar el correo
echo 'Mensaje enviado correctamente';
else
echo 'Mensaje no enviado';