Pero .. en que servicio de hosting o PC estás ejecutando ese script PHP?
Si deces que "a veces funciona y otras no" .. deberías intentar ver los registros de "log" de ese servidor de SMTP/sendmail o lo que uses como "MTA" para enviar el e-mail .. sino, nunca saldrás de dudas.
De todas formas .. la función de lado2mx .. sería algo más correcta que la original .. pero NO está pasando esas variables $nombre y demás a dicha función ni declarandolas como globales almenos ...
function enviar($MailTo,$nombre,etc variables ...) {
Y su uso ...
enviar("
[email protected]","nombre",etc ...);
Un saludo,