<? no es correcto <?php si es correcto
Así evitas algunos problemas...
Tu error es porque estas enviando un header despues de enviar contenido...
Osea, no puedes poner un header y que anterior a éste, haya código.
Cuando envias una cabecera header, no puedes a ver nada, ni siquiera un espacio.
Una manera sencilla pero no recomendable, es usar el caracter de supresión de errores (@)
ejemplo:
@header("Location: gracias.html");
Saludos,