Tiene razón carmagedon, el problema está en esa sentencia
$mensaje = str_replace('"',""",$mensaje);
Estás poniendo comillas dobles para indicar una comilla doble, si quieres hacer eso deberías escapar la comilla doble (poner "\"") o usar comillas simples como tienes en la otra opción '"'.
A parte de eso comprueba el código, pero creo que te falta cerrar bien el while.
Y ya como consejo. Mira bien lo que estás haciendo, por que es algo relativamente sencillo que puede que estés liando más de la cuenta
Suerte!