Your problem is that you are confused about what type of mail you are sending.
You are sending mail headers indicating the content type as text/html, but you are sending data more appropriate for text/plain. Since the mail client is expecting HTML, it is not likely to parse the text and transform URLs into clickable links (as it would if you sent text/plain.)
The network standard for line enders is CR-LF ("\r\n"). Line enders are not signficant in HTML, but it is wise to constrain line lengths in email transmissions.
Incidentally,
$message.= "http://".$_SERVER["HTTP_HOST"].$_SERVER['PHP_SELF']."?mode=confirm&ref=".$num."&act_key=".$hold_pass."\r";
could be rewritten to avoid all of the concatenation calls:
$message.= "http://{$_SERVER['HTTP_HOST']}{$_SERVER['PHP_SELF']}?mode=confirm&ref=$num&act_key=$hold_pass\r\n";
I see a lot of code posted to PHPBuilder.com that makes me think people have not read the section of the manual covering how variables are expanded in double-quoted strings:
http://www.php.net/manual/en/language.types.string.php