Hola zhermoso,
Para empezar las @ antes de la captura de las variables no te ayudan en nada porque lo único que hacen es ocultar posibles errores que haya que es lo que te podría ayudar a resolverlos:
Para resolver un error, primero hay que saber qué error es.
Por otra parte, deberías verificar si recibes cada variable:
Después, te convendría depurar tu código a ver dónde te está fallando, no obstante, te recomiendo que utilices la
librería PHPMailer, es más segura a la hora de que se entreguen los correos, ya que se puede usar con autenticación SMTP y eso evita que los correos se marquen como SPAM.
Espero haberte ayudado.