Tiene problemas con la función php mail () usando htmlspecialchars, el correo envía cada vez que la página carga

He buscado e intentado varias formas de hacerlo, pero nada parece funcionar como estaba planeado. Estoy tratando de configurar un formulario de contacto y uso

 

como acción de formulario, no estoy seguro de si eso es necesario hoy en día, pero es por eso que estoy preguntando, no quiero que se aplique ninguna inyección. El formulario está funcionando de la manera que yo quiero y enviando el correo, excepto que está enviando el correo cada vez que se carga la página, si hay información en el cuadro o si surgen errores. Hay dos cosas en las que me gustaría recibir ayuda aquí.

  1. Exhibir correctamente un mensaje de agradecimiento en un elemento en la parte inferior del formulario, un mensaje emergente modal o un mensaje de alerta de arranque.

  2. Necesito la función iss issper para hacer que este correo de una página funcione y solo en POST cuando se hace clic en el botón .

A continuación, pondré todo el código de formulario PHP y html que tengo actualmente. Gracias por adelantado.

   <form id="my-form" method="post" action=""> 
<input type="text" name="name" value="" required placeholder="Please Enter Your Name" autofocus class="form-control" id="firstname" />
<input type="text" name="ethaddress" value="" placeholder="ERC20 Compliant ETH Address" class="form-control" id="lastname" />
<input type="text" name="txhash" value="" placeholder="Transaction Hash of Purchase, if applicable" class="form-control" id="phonenumber" />
<input type="text" name="email" required value="" placeholder="Please Enter Valid Email Address" class="form-control" id="email" />

Por lo que veo, estás llamando al mail($to,$subject,$message,$headers); al final del archivo en cada carga de página. debe poner esta parte en la condición que compruebe si $ _POST está configurado o no.